diff --git a/选择排序 b/选择排序 index 6a20d6b..2f8f111 100644 --- a/选择排序 +++ b/选择排序 @@ -34,3 +34,46 @@ int main() printf("%d ",arr[i]); } } +//希尔排序 +//复杂度:O(n^1.3) +//运行时间:170ms +#include +void ShellSort(int* arr, int n) +{ + int gap = n; + while (gap>1) + { + gap = gap / 2; + for (int i = 0; i < n - gap; ++i) + { + int end = i; + int tem = arr[end + gap]; + while (end >= 0) + { + if (tem < arr[end]) + { + arr[end + gap] = arr[end]; + end -= gap; + } + else + break; + } + arr[end + gap] = tem; + } + } +} + +int main() +{ + int n; + scanf("%d",&n); + int arr[n]; + for(int i=0;i