插入排序,基本上就是我们平时打牌,拿牌排序的算法了。
适用于少量数据的排序,时间复杂度为O(n^2)。
具体表现如下:
具体代码:
void Insertsort1(int a[], int n)
{
int i, j, k;
for (i = 1; i < n; i++)
{
//为a[i]在前面的a[0...i-1]有序区间中找一个合适的位置
for (j = i - 1; j >= 0; j--)
if (a[j] < a[i])
break;
//如找到了一个合适的位置
if (j != i - 1)
{
//将比a[i]大的数据向后移
int temp = a[i];
for (k = i - 1; k > j; k--)
a[k + 1] = a[k];
//将a[i]放到正确位置上
a[k + 1] = temp;
}
}
}
希尔排序是对直接插入排序方法的改进。
http://blog.csdn.net/morewindows/article/details/6665714