直接插入排序

发现人们写算法老是喜欢表达式,表达式只不过是脑中图片的展示,所以显示脑子的图片才是关键。不要过于抽象~

直接插入排序,正如其名,有两个不分,

有小到大排序

第一步:插入;第二步:排序;

如果2小于8,然后就是将2加入到这个蓝色的小序列中,进行排序

接着,2,8就排序好了,然后判断4是不是小于8,肯定是的,然后将4加入到蓝色的小序列中

这边9肯定不是小于8的所以就不进行操作了。

然后即使对3肯定小于9然后将3列入子序列中排序

 

最终就排好了

Straight Insert Sortin
#include<stdio.h>
#define ARRAY_LENGTH 6
void swap(int *frontNum,int *behindNum){
    int temp;
    temp=*frontNum;
    *frontNum=*behindNum;
    *behindNum=temp;
}
void display(int nums[]){
    int i;
    for(i=0;i<ARRAY_LENGTH;i++){
        printf("%d\n",nums[i]);
    }
}
main(){
    int nums[ARRAY_LENGTH]={8,2,4,9,3,6};
    int front,behind;
    for(behind=1;behind<ARRAY_LENGTH;behind++){
        for(front=behind-1;front>=0&&nums[front]>nums[front+1];front--){
            swap(&nums[front+1],&nums[front]);//已经跟behind没有关系了,在子序列中操作
        }
    }
    display(nums);
    
}

我感觉这个版本的比较好,变量都有意义,而且代码模块话,也好维护

转载于:https://www.cnblogs.com/epirus/archive/2013/01/08/2850521.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值