一.直接插入排序
直接插入排序的思路:排升序
如何向数组中插入一位数字:(1)先给定一组排序好的数组,a[5]={1,3,4,6,7}; 在向数组中插入一位数 x=2时,我们把数组中a[4]=7的位置标记为end位 (2)将我们要插入的数据x=2与end位的数据进行比较,如果x=2小于a[end] ,那么就将a[end]的数据移到a[end+1]的位置上. (3)再将end--,将a[end]的数据再次与2比大小,如果还是x=2小于a[end],那么就重复上面的方法(移end 的位置),如果2大于a[end]的数据就将x=2放在end位之后,即a[end+1]=x;
如下图所示:
学会对一位数进行插入排序,那么如何对一个凌乱的数组进行排序呢?
对数组a[8]={3,4,1,7,8,5,6};进行排序。
假设数组中只有一位数 3,其他数都是要插入到数组中
当数组中只有一位数时{3},end =0,数字4就为end+1 位,将x=a[end+1](x=4)插入到数组中:4比3大,end的不发生变化,直接插入数组中这是数组为{3,4}.
将1插入到数组{3,4}中时,end=1,a[end]=4,x=a[end+1] (x=1), 1<4 , a[end+1]=a[end]( 将4向后移一位),再次将end--,这时的end=0,将1与a[end]=3相比较,1<3 , a[end+1]=a[end]( 将4向后移一位),end--,这时end为-1,数字计较结束,将1插入到end+1的位置,即a[end+1]=1;
这时数组前三位数就排序完成{1,3,4},后面的数字依次按照相同的方法插入即可排序完成。
。。。。。。依此类推,排序完成。代码如下: