直接插入排序

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

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

有小到大排序

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

如果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);
    
}

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

posted @ 2013-01-08 09:31  Epirus  阅读(188)  评论(0编辑  收藏  举报