将数组看成两个数据,第一个一位数字设为有序数组,将后一个值与前面的值逐一比较,大于直接放在原位置,小于则每次比较的值后移一位,找到合适位置插入
#include<iostream>
using namespace std;
void printArray(int* array, int len)
{
for (int i = 0; i < len; i++)
{
cout << array[i] << '\t';
}
}
void insertSort(int* array, int len)
{
for (int i = 1; i < len; i++)
{
int key = array[i];
int j = i - 1;
while (j >= 0 && key < array[j])
{
array[j + 1] = array[j]; //后移
j--;
}
array[j + 1] = key;
}
}
int main()
{
int array[] = { 3,13,43,23,65,23,1,9,15,8 };
int len = sizeof(array) / sizeof(int);
printArray(array, len);
cout << '\n';
insertSort(array, len);
printArray(array, len);
return 0;
}