插入排序思想:数组分为两部分,已排好序的和待排序的部分。每次从待排序部分取一个元素插入到已经排好序的部分,直到整个数组有序。
时间复杂度:0(n^2);
稳定性:稳定。
#include <iostream>
using namespace std;
void InsertSort (int * A, int length);
int main ()
{
int arr[] = {3,1,5,2,4,99,8,7};
int len = sizeof(arr)/sizeof(arr[0]);
InsertSort(arr,len);
for (int i = 0; i < len; ++i)
{
cout << arr[i] << "\t";
}
cout << endl;
return 0;
}
void InsertSort (int * A, int length)
{
if (A == NULL || length < 1)
{
return;
}
for (int i = 1; i < length; ++i)
{
int key = A[i];
int j = i-1;
while (j >= 0 && A[j] > key)
{
A[j+1] = A[j];
j--;
}
A[j+1] = key;
}
}