diff --git a/插入排序 b/插入排序 new file mode 100644 index 0000000..7ee33d5 --- /dev/null +++ b/插入排序 @@ -0,0 +1,77 @@ +//插入排序 +//复杂度:O(n^2) 运行时间:170ms +#include +void InsertSort(int arr[], int length) +{ + for (int i = 1; i < length; i++) + { + int j; + if (arr[i] < arr[i - 1]) + { + int temp = arr[i]; + for (j = i - 1; j >= 0 && temp < arr[j]; j--) + { + arr[j + 1] = arr[j]; + } + arr[j + 1] = temp; + } + } +} + +int main() +{ + int n; + scanf("%d",&n); + int arr[n]; + for(int i=0;i +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