排序算法-Sort,更高效率的插入排序—希尔排序
代码
void shell_sort(int a[], int n)
{
int i,j,k, key;
k = n / 2;
while (k >= 1)
{
for (i = k; i < n; i++) //插入排序时,两个比较元素之间距离k
{ //在简单插入排序中两个比较元素距离为1
key = a[i];
j = i - k;
while (key < a[j] && j >= 0)
{
a[j + k] = a[j];
j -= k;
}
a[j + k] = key;
}
k /= 2;
}
}
时间复杂度 | 空间复杂度 |
稳定性 |
复杂性 |
||
平均 |
最坏 |
最好 |
|||
O(nlogn)~O(n^2) |
O(nlogn)~O(n^2) | O(1) |
不稳定 | 较复杂 |