插入排序

来源:互联网 发布:软件外包公司分录 编辑:程序博客网 时间:2024/05/20 07:18

今天学习了下插入排序。不大会表达、、、见谅啊!

代码如下

void InsertSort(int a[], int len){int i,j;int key ;for(j = 1; j < len; j++){key = a[j];i = j - 1;while(a[i] > key){a[i + 1] = a[i];i = i - 1;}a[i + 1] = key;}}

插入排序的思想就是:利用一个key来记录待插入值,该值的位置用来给排好序的序列来移位。 

j用来记录待插入的数的位置,而i记录已排好序的序列的最后一个(即j-1)

例如 7  6  5  2   3   8   9  此时设置j的位置为1,则i的位置为j-1 = 0

我们可以将j的位置挖空。

7    -     5     2    3    8      9

然后比较i=0,和key的大小 (7 > 5),则7向后移a[i+1] = a[i] ,

这样一直寻找就可以在已排序的序列中找到key的位置(即 i+1)  a[i+1] =key




0 0
原创粉丝点击