直接插入排序

0 1 2 3 4
5 2 8 12 3

 

 

 

 

 

 

从下标1开始遍历,默认第一个元素是已排序序列。

例如对元素3进行插入排序:

下标0-3分别是2-5-8-12;

此时k=arr[4]=3;  j=i-1=3;  从后往前遍历找到k应该插入的位置  当while循环条件  j>=0&&arr[j]>k  一直成立时,arr[j+1]=arr[j]; 元素后移一位

不满足while循环条件时,arr[j+1]=k;  这是元素3最终插入的地方

void InsertSort(int arr[],int n)
{
    int i,j,k;
    for(i=1;i<n;i++)
    {
        k=arr[i];
        j=i-1;
        while(j>=0&&arr[j]>k)
        {
            arr[j+1]=arr[j];
            j--;
        }
        arr[j+1]=k;
    }
}

 

posted on 2023-12-02 13:54  四马路弗洛伊德  阅读(12)  评论(0)    收藏  举报

导航