Update shell法.cpp

master
pmkfqw2gu 4 years ago
parent 438aeb7a5a
commit ab2430c996

@ -1,20 +1,41 @@
void shell(int *a,int n) 4
4.1
d1<nd1
d2<d1di=1
4.2
O(n^1.3)
O(1)
4.3
void ShellSort(int *arr, int size)
{ {
int i,j,k,x; int i, j, tmp, increment;
k=n/2; /*<2A><><EFBFBD>ֵ*/ for (increment = size/ 2; increment > 0; increment /= 2)
while(k>=1)
{ {
for(i=k;i<n;i++) for (i = increment; i < size; i++)
{ {
x=a[i]; tmp = arr[i];
j=i-k; for (j = i - increment; j >= 0 && tmp < arr[j]; j -= increment)
while(j>=0&&x<a[j])
{ {
a[j+k]=a[j]; arr[j + increment] = arr[j];
j-=k;
} }
a[j+k]=x; arr[j + increment] = tmp;
} }
k/=2; /*<2A><>С<EFBFBD><D0A1><EFBFBD>ֵ*/
} }
} }
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
Loading…
Cancel
Save