欢迎光临
我们一直在努力

6.4 插入排序算法

循环遍历,将每次得到新的无序值参与到有序列表中重新排序.

比如: 发扑克牌,未发的牌就是无序序列, 当我们每起一张牌会将手里已经有的牌重新排序

 
// 升序排序    
int arr[] = {5, 4, 3, 6, 9, 7, 10, 8};
int size = ArraySize(arr);
// 主循环
int insertIndex = 0; // 记录当前需要插入元素的下标
for(int i = 0; i < size; i++){
  insertIndex = i; // 当前新加入到有序列表中的最后下标
  // 将新加入需要排序的值和有序列表进行重新排序
    while(insertIndex >= 1)
    {
      // 为新加入的值重新排序
      if(arr[insertIndex - 1] > arr[insertIndex]) // 5 > 4 
      {
         // 当前有序值 和当前无序值进行位置交换
         int temp = arr[insertIndex - 1];
         arr[insertIndex - 1] = arr[insertIndex];
         arr[insertIndex] = temp;
      }

      insertIndex--;
    }
    printf("主循环次数:%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]);
}

//降序排序    
int arr[] = {5, 4, 3, 6, 9, 7, 10, 8};
int size = ArraySize(arr);
// 主循环
int insertIndex = 0; // 记录当前需要插入元素的下标
for(int i = 0; i < size; i++){
  insertIndex = i; // 当前新加入到有序列表中的无序下标号
  // 将新加入需要排序的值和有序列表进行重新排序
    while(insertIndex >= 1)
    {
      // 为新加入的值重新排序
      if(arr[insertIndex - 1] < arr[insertIndex]) // 5 > 4 
      {
         // 当前有序值 和当前无序值进行位置交换
         int temp = arr[insertIndex - 1];
         arr[insertIndex - 1] = arr[insertIndex];
         arr[insertIndex] = temp;
      }

      insertIndex--;
    }
    printf("主循环次数:%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]);
}
 收藏 (0) 打赏

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

支付宝扫一扫赞助

微信钱包扫描赞助

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

评论 抢沙发

瓜皮猫量化交易编程

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

登录

忘记密码 ?

切换登录

注册

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