排序算法——插入排序

  • 当数组只有一个元素时此数组即为有序数组,将一个有NUM个元素的数组中的第一个元素设置为有序数组,右边NUM-1个为待插数据然后NUM-1轮,每轮把一个数据插入到有序数组中
     66		43		89		98		12		18		15		23		33		50
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]		0
     43		66		89		98		12		18		15		23		33		50
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9] 	1
     43		66		89		98		12		18		15		23		33		50
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     2
     43		66		89		98		12		18		15		23		33		50     
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     3
     12		43		66		89		98		18		15		23		33		50   
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     4
     12		18		43		66		89		98		15		23		33		50     
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     5
     12		15		18		43		66		89		98		23		33		50     
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     6
     12		15		18		23		43		66		89		98		33		50
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]     7
     12		15		18		23		33		43		66		89		98		50     
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9]  	8
     12		15		18		23		33		43		50		66		89		98    
    a[0]   a[1]    a[2]    a[3]    a[4]    a[5]    a[6]    a[7]    a[8]    a[9] 	9
    //插入排序
    void insert_sort(int* a, int len){
    	int temp;//用来保存待插数据
    	int j;
    	for (int i = 1; i < len; i++){//len-1轮
    		temp = a[i];//临时保存待插数据
    
    		for (j = i - 1; j >= 0; j--){//待插数据前一个开始往前循环(越界循环结束)
    			if (a[j]>temp){//比待插数据大则往后覆盖
    				a[j + 1] = a[j];
    			}
    			else{
    				break;
    			}
    		}
    		//用待插数据覆盖回来(第二步结束后下标的下一个位置)
    		a[j+1] = temp;
    	}
    }

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值