直接插入排序
发布日期:2021-05-07 16:19:00 浏览次数:25 分类:精选文章

本文共 864 字,大约阅读时间需要 2 分钟。

       假定排序规则是递增的,直接插入排序的思路就是找到一数,这个数前面(数组首部)的数比它大,从这个数开始往前遍历,只要是比它大的都往后位移,直到比它小的为止,将这个数插入在这里。多次后就完成了直接插入排序。

比如我们定义了一个数组

       那么第一次找到的数就是1,从1开始往前(数组首部)遍历,5 > 1,将5放到1的位置上。直到到将2挪到原来3的位置上,将1放在原来2的位置上,就完成了一趟。可以看出,后移的过程中是需要一个额外的变量来保存我们找到的数。

源代码如下:

////               直接插入排序////          Created by GPH on 14-5-3.//  Copyright (c) 2014年 GPH. All rights reserved.//#include 
#include
void insertSort(int a[],int length){ int tmp = 0; int i,j; for (i = 1; i < length; i++) { if (a[i] < a[i-1]) { tmp = a[i]; for (j = i-1; tmp < a[j]; j--) { a[j+1] = a[j]; } a[j+1] = tmp; } }}int main(){ int a[10] = {3,2,5,1,6,8,7,9,0,4}; insertSort(a, sizeof(a)/sizeof(a[0])); for (int i = 0; i < 10; i++) { printf("%d ",a[i]); } return 0;}
结果如图:

上一篇:冒泡排序
下一篇:iOS内存管理的一些问题

发表评论

最新留言

很好
[***.229.124.182]2025年04月03日 04时24分27秒