插入排序
使用范围:
适用于元素较少的排序。
算法思想
设数组A为待排序数组,从A中第二个元素开始,依次取从左向右取A中的每个元素。以此元素为界将A数据分为两块,该元素左边为已经排序稳定的序列,该元素的右边为A数据中原始的数据序列。并将该元素插入右边的序列中,保证元素插入之后的序列依旧是有序的。向后依次取元素,插入右边序列,直到A中左边序列的所有元素均有序插入右边变序列为止。
伪代码
for j=2 to A.length
key = A[j]
//Insert A[j] into the sorted sequence A[1..j-1]
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i -1
A[i+1] = key
C++代码
int* InsertSort(int* A)
{
for(int i =1; i < 8; i++)
{
int key = A[i];
int j = i-1;
while (A[j]>key && j>=0)
{
A[j+1] = A[j];
j = j - 1;
}
A[j+1] = key;
}
return A ;
}
算法分析
该算法时间复杂度为O(n*n),空间复杂度为1。