美文网首页
数据结构c-直接插入排序-图解

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

作者: 江海大初学者 | 来源:发表于2019-05-31 15:35 被阅读0次

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

图解

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

image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png 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;
}

相关文章

网友评论

      本文标题:数据结构c-直接插入排序-图解

      本文链接:https://www.haomeiwen.com/subject/oogwtctx.html