您的位置:首页 > 其它

简单的插入排序

2016-04-28 18:11 176 查看

算法思想

将记录 i 插入到 i-1 个已经排好序的记录中。

具体操作:将记录i 顺次和前面的记录i-1,i-2,i-3…进行比较,将所有大于记录i 的记录向后

移动一个,直到遇见小于或等于记录i的记录j,此时记录j后必有一个空位,将记录i放置于此。

实现

//将需要排序的数据从下标1开始放置,a[0]用于记录当前排序的数据,还可以放置数组的越界问题
void insertSort(int a[], int length) {
//这里从第二个记录开始排序,因为第1个不需要排序。
int i = 2;
for (; i <= length; i ++) {
//记录当前排序数据,并防止了数组的越界
a[0] = a[i];
//从已经排好序的最后一个依次向前比较
int j = i - 1;
while(a[0] < a[j]) {
a[j+1] = a[j];
//j的值最小是0,当j为0时,循环退出。防止了越界
j --;
}
a[j+1] = a[0];
}
}


总结

1、使用a[0]作为监视哨,即保存了数据,又防止越界

2、需要从后向前比较
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插入排序