美文网首页
数据结构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