#include<iostream>
using namespace std;
void InsertSort(int a[], int n)
{
for (int j = 1; j < n; j++)
{
cout << a[j];
int key = a[j]; //待排序第一个元素
int i = j - 1; //代表已经排过序的元素最后一个索引数
while (i >= 0 && key < a[i])
{
//从后向前逐个比较已经排序过数组,如果比它小,则把后者用前者代替,
//其实说白了就是数组逐个后移动一位,为找到合适的位置时候便于Key的插入
a[i + 1] = a[i];
i--;
}
a[i + 1] = key;//找到合适的位置了,赋值,在i索引的后面设置key值。
}
}
void main() {
int d[] = { 12, 15, 9, 20, 6, 31, 24 };
cout << "输入数组 { 12, 15, 9, 20, 6, 31, 24 } " << endl;
InsertSort(d, 7);
cout << "排序后结果:";
for (int i = 0; i < 7; i++)
{
cout << d[i] << " ";
}
}

这组代码要对七个数据进行排序,首先设置key,可以理解为监视哨
从15开始,一直到24
如果说监视哨的值小于前一个数的值
比如15和12比较,15大于12,不满足while的条件,那就不调换位置
12在前,15在后
监视哨为9的时候,9和15比较,9小于15,满足while的条件,9和15调换位置,接下来9和12进行比较,9小于12,然后9和12再掉换位置。
以此类推,我们就能完成从前到后的排序
126



被折叠的 条评论
为什么被折叠?



