希尔排序

来源:百度文库 编辑:神马文学网 时间:2024/07/04 22:40:21
#include
#include
void shellinsert(int v[], int n, int k)
{
int i, j;
int temp;
for (i = k; i < n; i++)
{
temp = v[i];
for (j = i - k; j >= 0; j -= k)
{
if (v[j] > temp)
{
v[j + k] = v[j];
}
else
{
break;
}
}
v[j + k] = temp;
}
}
void shellsort1(int v[], int n)
{
int k = n/2;
for (; k > 0; k /= 2)
{
shellinsert(v, n, k);
}
}
void shellsort2(int V[], int n)
{
int gap, i, j, temp;
for (gap = n/2; gap > 0; gap /= 2)
for (i = gap; i < n; i++)
for (j = i-gap; j>=0 && V[j]>V[j+gap]; j -= gap) {
temp = V[j];
V[j] = V[j+gap];
V[j+gap] = temp;
}
}
int main()
{
int data[] = {9, 8, 7, 6, 5, 4};
int i, length = 6;
shellsort1(data, length);
for (i = 0; i < length; i++) {
printf("%d, ", data[i]);
}
return 0;
}