C 实现的插入排序算法

简介:

插入排序算法的原理

有一个很形象的比喻,每次从牌堆里抽一张新牌时,左手一般拿着的是已经排好序的旧牌,有新牌来的时候,会不由自主的从右到左的插入进去.后续的牌按照这个规律下去,最后左手的牌都是排好序了.

现在用程序语言的角度来说明插入排序原理.


  • 从数组的第二位开始loop,这是外loop

  • 开启一个内loop,依次检查外loop当前数组值的左侧,如果比当前数组值大,则左侧值向右移动,直到碰到比当前值小的或者内loop结束,此时把当前值放入 左侧留下的空位.

下面是C 实现的完整代码

#include <stdio.h>

void insertSort(int *, int);  

int main()  
{  
    int i, n;  
    int num[10];  

    while(scanf("%d", &n) != EOF)  
    {  
        //接收无序数据  
        for(i = 0; i < n; i ++)  
        {  
            scanf("%d",num + i);  
        }  

        //快速排序  
        insertSort(num, n);  

        //打印输出  
        for(i = 0; i < n; i ++)  
        {  
            printf("%d ",num[i]);  
        }  
        printf("\n");  
    }  

    return 0;  
}  

void insertSort(int *array, int len)  
{  
    int i, j, temp;  

    for(i = 1; i < len; i ++)  
    {  
        temp = array[i];  
        for(j = i - 1; j >= 0; j --)  
        {  
            if(array[j] > temp)  
            {  
                array[j + 1] = array[j];      
            }else  
            {  
                break;  
            }  
        }  
        array[j + 1] = temp;  
    }  
}  

运行实例

此处使用gcc编译,命令如下

gcc -o insertsort insertsort.c

最后直接在命令行里输入insertsort.exe即可.


目录
相关文章
|
3月前
|
算法 搜索推荐 C#
|
4月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
4月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
29 2
|
4月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
4月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
27 0
|
4月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:直接插入排序和希尔排序
【C/排序算法】:直接插入排序和希尔排序
33 0
|
4月前
|
搜索推荐 算法
排序算法之插入排序
排序算法之插入排序
34 0
|
4月前
|
搜索推荐
排序算法---插入排序-----详解&&代码
排序算法---插入排序-----详解&&代码
|
4月前
|
人工智能 算法 C语言
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
31 0
|
5月前
|
存储 算法 搜索推荐
【数据结构与算法】:插入排序与希尔排序
欢迎大家来到初阶数据结构的最后一小节:排序
【数据结构与算法】:插入排序与希尔排序