数据结构c-直接插入排序-图解

插入排序的基本思想是:将第i个元素插入到第i-1个前面已经排好序的集合中。

图解

假设我们有个数组是[48, 62, 35, 77, 55, 14],要对这个排序

5205102-b9f712576cc88f7b.png
image.png

我们把数组的第一个元素作为已经排好序的元素


5205102-ce31b8f484d0d0f5.png
image.png

我们把62这个元素和48比较,我们发现,62>48,所以不变


5205102-42e6997b8c1c855d.png
image.png

我们把35这个元素和62比较,我们发现,35<62,所以将35插入到62的左边。


5205102-0efc3d138ea7f34a.png
image.png

我们把35这个元素和48比较,我们发现,35<48,所以将35插入到48的左边。


5205102-7a539d018c58e32b.png
image.png

我们把77这个元素和62比较,我们发现,77>62,所以不变


5205102-3c76f1365a670670.png
image.png

我们把55这个元素和77比较,我们发现,55<77,所以将55插入到77的左边。


5205102-33bf59cf93a63aa0.png
image.png

我们把55这个元素和62比较,我们发现,55<62,所以将55插入到62的左边。


5205102-be25e26a6d515d17.png
image.png

我们把55这个元素和48比较,我们发现,55>48,所以不变,并结束本次比较


5205102-2a8c24caede27664.png
image.png

我们把14这个元素和77比较,我们发现,14<77,所以将14插入到77的左边。


5205102-457a82e4a8051eb7.png
image.png

我们把14这个元素和62比较,我们发现,14<62,所以将14插入到62的左边。


5205102-33b91a0c349e2612.png
image.png

我们把14这个元素和55比较,我们发现,14<55,所以将14插入到55的左边。


5205102-ef5edbf2648f7194.png
image.png

我们把14这个元素和48比较,我们发现,14<48,所以将14插入到48的左边。


5205102-97e299440b85f4d7.png
image.png

我们把14这个元素和35比较,我们发现,14<35,所以将14插入到35的左边。


5205102-a0cbd6067932da23.png
image.png
5205102-ecc9e701170ac467.gif
ins.gif

代码:

#include <stdio.h>

void insSort(int *arr){
    for (int i=0; i<6; i++) {
        for (int j=i; j>=0; j--) {
            if(arr[j+1]<arr[j]){
                int tmp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=tmp;
            }
        }
    }
}

int main(int argc, const char * argv[]) {
    int arr[6];
    arr[0]=48;
    arr[1]=62;
    arr[2]=35;
    arr[3]=77;
    arr[4]=55;
    arr[5]=14;
    insSort(arr);
    for (int i=0; i<6; i++) {
        printf("%d\t",arr[i]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_34355559/article/details/90910886