Update shell法.cpp

master
pmkfqw2gu 4 years ago
parent 438aeb7a5a
commit ab2430c996

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