排序算法-插入排序-C

本文介绍插入排序算法,思路是从前往后进行N - 1趟排序,每趟保证0到P - 1位置元素有序,将P位置元素插入合适位置。还提及了插入排序的平均、最好和最坏时间复杂度,并给出了参考链接。

思路:

从前往后,需要N-1趟,对于P=1趟到P=N-1趟,保证从位置0到

位置P-1上的元素已经排序,对于第P趟,将位置P上的元素插入到已经排过序的0到 P-1之间。

插入的时候通过将P为位置上的元素存于tmp中,从已经排序的元素中从后往前比较,只要比tmp大,就后移一位,直到找到正确的插入位置,将tmp插入。

时间复杂度:

平均,O(n^{2}) ; 最好 , O(n) ;最坏,O(n^{2})

程序:

void insert_sort(int array[],int array_size)
{
    int i,j,tmp;
    for(i=1;i<array_size;i++)
    {   
        tmp=array[i];
        for(j=i;j>0&&array[j-1]>tmp;j--)
            array[j]=array[j-1];
        array[j]=tmp;
    }   
}
#include <stdio.h>

int main()
{
    int i;  
    int array[]={100,96,88,75,63,52,41,36,28,19,6,0,-19,-105};
    int array_size=sizeof(array)/sizeof(int);
    printf("Original array:\n");
    for(i=0;i<array_size;i++)
        printf(" %d, ",array[i]);
    printf("\n");
    insert_sort(array,array_size);
    printf("Sorted array:\n");
    for(i=0;i<array_size;i++)
        printf(" %d, ",array[i]);
    printf("\n");
    return 0;
}

参考:

https://www.runoob.com/w3cnote/insertion-sort.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值