1.插入排序(直接上代码了,就不说明了)
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 9,9,1,2,31,43,4,2,8,7,5 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 1; i < sz; i++)
{
int j = i - 1;
int target = arr[i];
while (j > -1 && target > arr[j])
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = target;
}
2.希尔排序(插入排序的变种,虽然是三重循环但效率不会差)(直接上代码了)
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 9,9,1,2,31,43,4,2,8,7,5 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int interval = sz / 2; interval > 0; interval /= 2)
{
for (int i = interval; i < sz; i++)
{
int j = i - interval;
int target = arr[i];
while (j > -1 && target > arr[j])
{
arr[j + interval] = arr[j];
j -= interval;
}
arr[j + interval] = target;
}
}
}