经典排序算法之——插入排序

经典排序算法之——插入排序

时间复杂度:

  最好:O(n)

  最坏:O(n^2)

空间复杂度:

  O(1)

什么时候选择插入排序:

  1、n较小

  2、在要排序的序列已经将顺序大致排好的时候,或者说每一个数都在他应该在的位置左右的时候用插入排序较好

图解:

代码:

 

#include <stdio.h>

#define N 10

void my_csort(int *arr,int n)
{
    //保存要插入的一个值。
    int i,j,val;
    //将每一个值都依次取出按顺序插入。
    for(i = 1;i<n;i++)
    {
        val = arr[i];
        //i指向要插入的j指向i右边要比较的。
        j = i-1;
        //当走到最开始则退出,当走到比自己小的位置退出。
        while(j>=0 && arr[j]>val)
        {
            //如果比自己大大的数后移,把空位让出来。
            arr[j+1] = arr[j];
            //继续走。
            j--;
        }
        arr[j+1] = val;
    }
}

int main(void)
{
    int a[N] = {1,4,7,8,5,2,3,6,9,0};
    my_csort(a,N);
    for(int i = 0;i<N;i++)
    printf("%d\t",a[i]);
    printf("\n");
    return 0;
}

 

 

posted @ 2022-07-19 10:16  西北小蚂蚁  阅读(91)  评论(0编辑  收藏  举报