1、插入排序
实现思路:
1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。
2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有 5个数8,15,20,45, 17
,17比45小,需要交换,但是17也比20小,也要交换,当不需 要和15交换以后,说明也不需要和15前面的数据比较了,肯定不需要交换,因为前 面的数据都是有序的。
3.重复步骤二,一直到数据全都排完。
代码范例
#include <iostream>
void PrintValue(int *p_num, int num)
{
for(int i = 0;i < num;++i)
{
std::cout << p_num[i] << " ";
}
std::cout << '\n'; // 输
}
void InsertSort(int *p_num, int num)
{
PrintValue(p_num, num);
for(int i = 1; i < num; ++i) //从第1个元素开始循环,//一共需要循环 num-1 轮
{
int key = p_num[i];
int j = i -1;
while (j>=0&& p_num[j] > key) //若元素大于插入元素
{
p_num[j+1] = p_num[j]; //元素向后移
j--;
}
p_num[j+1] = key;
}
PrintValue(p_num, num);
}
int main() {
int a[] = {9,3,6,1,0,2};
InsertSort(a, 6);
return 0;
}
111