• 数据结构之插入排序


    插入排序是很常见的排序方式,通常我们使用的插入排序有下面几种:

    1、直接插入排序

    算法思想:第 i 趟插入排序为:在含有i-1个元素的有序子序列中插入一个元素,使其成为含有i个元素的有序子序列。在查找插入位置的过程中,可以同时后移元素。整个过程进行n-1趟插入,即先将整个序列的第1个元素看成是有序的,然后从第2个元素起逐个进行插入,直至整个序列有序。

     1 void directInsertSort(int Arr[], int n)
     2 {
     3     int i, j, temp;
     4     for (i = 1; i<n-1; i++)
     5     {
     6         if(Arr[i] < Arr[i-1])
     7         {
     8             j = i - 1;
     9             temp = A[i];
    10             while(j >= 0 && temp < Arr[j])
    11             {
    12                 Arr[j+1] = Arr[j];
    13                 j--;
    14             }
    15             Arr[j+1] = temp;
    16         }
    17     }
    18 }

    2、折半插入排序

    算法思想:插入思想同直接插入排序,但寻找查找位置使用折半查找法。

     1 void BinInsertSort(int Arr[], int n)
     2 {
     3     int i, j, low, high, mid, temp;
     4     for(i = 1; i <= n-1; i++)
     5     {
     6         temp = Arr[i];
     7         low = 0;
     8         high = i - 1;
     9         while(low <= high)
    10         {
    11             mid = (low + high)/2;
    12             if(temp > Arr[mid])
    13                 low = mid - 1;
    14             else
    15                 high = low + 1;
    16         }
    17         for(j = 1; j > low; j--)
    18             Arr[j] = Arr[j-1];
    19     }
    20 }

    作者:耑新新,发布于  博客园

    转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

  • 相关阅读:
    .NET 操作XML
    C#常用操作类库五(电脑操作类)
    C#常用操作类库四(File操作类)
    C#常用操作类库一(验证类)
    RabbitMQ 学习
    redis 常用命令
    windows10配置redis一主二从三哨兵
    Oracle递归查询(查询当前记录所有父级或子级)
    echarts 中 柱图 、折线图、柱图层叠
    简单的前台登录
  • 原文地址:https://www.cnblogs.com/Arthurian/p/6208596.html
Copyright © 2020-2023  润新知