欢迎光临
我们一直在努力

6.3 选择排序算法

在数组的查询遍历中,当前元素和数组中剩下的元素根据排序条件(升序或者降序)的极限值进行位置的互换

升序排序: 当前元素和数组中剩下元素中最小的元素进行比较,并交换双方的位置

降序排序: 当前元素和数组中剩下元素中最大的元素进行比较,并交换双方的位置

// 升序排序
int arr[] = {3,2,9,1,7,8,5,6,4};
int size = ArraySize(arr);

for(int i = 0; i < size; i++)
{
    // 在从下一个下标开始到结束找到最小序号
    int min_index = i + 1;
    for(int j = i + 1; j< size - 1; j++)
    {
       if(arr[min_index] > arr[j + 1])
       {
           // 找到最小值的下标序号
           min_index = j + 1;
       }
    }
    //当前值 和 剩下的元素中找到了最小的值 进行比较
    if(arr[i] > arr[min_index])
    {
        int temp = arr[i];
        arr[i] = arr[min_index];
        arr[min_index] = temp;
    }

    printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
          i,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]);
}

// 降序排序
int arr[] = {3,2,9,1,7,8,5,6,4};
int size = ArraySize(arr);

for(int i = 0; i < size; i++)
{
    // 在从下一个下标开始到结束找到最小序号
    int min_index = i + 1;
    for(int j = i + 1; j< size - 1; j++)
    {
       if(arr[j] < arr[j + 1])
       {
           // 找到最小值的下标序号
           min_index = j + 1;
       }
    }
    //当前值 和 剩下的元素中找到了最小的值 进行比较
    if(arr[i] < arr[min_index])
    {
        int temp = arr[i];
        arr[i] = arr[min_index];
        arr[min_index] = temp;
    }

    printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
          i,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]);
}
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:瓜皮猫量化编程 » 6.3 选择排序算法
分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

瓜皮猫量化交易编程

QQ群: 492653640微信: guapitcom
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活