diff --git a/shell法.cpp b/shell法.cpp index 1c22c13..5f5d896 100644 --- a/shell法.cpp +++ b/shell法.cpp @@ -1,20 +1,41 @@ -void shell(int *a,int n) -{ - int i,j,k,x; - k=n/2; /*���ֵ*/ - while(k>=1) - { - for(i=k;i=0&&x 0; increment /= 2) + { + for (i = increment; i < size; i++) + { + tmp = arr[i]; + for (j = i - increment; j >= 0 && tmp < arr[j]; j -= increment) + { + arr[j + increment] = arr[j]; + } + arr[j + increment] = tmp; + } + } +} +int main() +{ + int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; + int len = (int) sizeof(arr) / sizeof(*arr); + ShellSort(arr, len); + int i; + for (i = 0; i < len; i++) + printf("%d ", arr[i]); + return 0; } + +4.4 运行时间 +0.02275s \ No newline at end of file