直接插入排序算法

直接插入排序(straight insertion sort)的思想:

       每次将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

具体实现方法:

      将待插入记录R[i]的关键字从右向左依次与有序区中记录R[j](j=i-1,i-2,…,1)的关键字进行比较:
       ① 若R[j]的关键字大于R[i]的关键字,则将R[j]后移一个位置;
       ②若R[j]的关键字小于或等于R[i]的关键字,则查找过程结束,j+1即为R[i]的插入位置。
       关键字比R[i]的关键字大的记录均已后移,所以j+1的位置已经腾空,只要将R[i]直接插入此位置即可完成一趟直接插入排序。

具体实例:

          排序前      45   36   77   55   42   45    98   66
       第一趟     {45}  36   77   55   42   45    98   66
       第二趟     {36  45}   77   55   42   45    98   66
       第三趟     {36  45   77 }  55   42   45    98   66
       第四趟     {36  45   55   77}   42   45    98   66
       第五趟     {36  42   45    55  77}   45    98   66
       第六趟     {36  42   45    45   55  77}    98   66
       第七趟     {36  42   45    45   55   77   98}   66
       第八趟     {36  42   45    45   55   66   77   98}


代码实现:

#include
using namespace std;

void StraightInsertSort(int arr[])
{
    int i,j;
    for(i=2;i<=8;i++)
    {
        arr[0]=arr[i];
        j=i-1;
        while(arr[0]>arr[i];
    }
    StraightInsertSort(arr);
    cout<<"直接插入排序后序列为:"<




你可能感兴趣的:(直接插入排序算法)