直接插入排序
发现人们写算法老是喜欢表达式,表达式只不过是脑中图片的展示,所以显示脑子的图片才是关键。不要过于抽象~
直接插入排序,正如其名,有两个不分,
有小到大排序
第一步:插入;第二步:排序;
如果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); }
我感觉这个版本的比较好,变量都有意义,而且代码模块话,也好维护