diff --git a/使用希尔排序进行排序.c b/使用希尔排序进行排序.c new file mode 100644 index 0000000..1155722 --- /dev/null +++ b/使用希尔排序进行排序.c @@ -0,0 +1,55 @@ +//ʹ��ϣ�����н����������� +#include +#include +void shellSort(int *a, int len); + +int main(void) +{ + int i, len, * a; + printf("������Ҫ�ŵ����ĸ�����"); + scanf("%d",&len); + a = (int *)malloc(len * sizeof(int)); + printf("������Ҫ�ŵ�����\n"); + for (i = 0; i < len; i++) + { + scanf("%d",&a[i]); + } + shellSort(a, len); + printf("ϣ���������к���Ϊ��\n"); + for (i = 0; i < len; i++) + { + printf("%d\t",a[i]); + } + printf("\n"); + + return 0; +} + +void shellSort(int *a, int len) +{ + int i, j, k, tmp, gap; + for (gap = len / 2; gap > 0; gap /= 2) + { + for (i = 0; i < gap; ++i) + { + for (j = i + gap; j < len; j += gap) + { + tmp = a[j]; + k = j - gap; + while (k >= 0 && a[k] > tmp) + { + a[k + gap] = a[k]; + k -= gap; + } + a[k + gap] = tmp; + } + } + } +} + +/*��ʱ�临�Ӷ� +ϣ�������ʱ�临�Ӷ��������������еĺ����������ڴ�����ʵ���ó��Ľ��ۣ���n��ij���ض��ķ�Χ�������ŵ�����£�ϣ�������ʱ�临�Ӷ�ΪO(n1.3)������������£�ϣ�������ʱ�临�Ӷ�Ϊ��O(n2). +�ռ临�Ӷ� +ϣ������Ŀռ临�Ӷȣ�O(1). +���Dz��ȶ��������㷨 +Process exited after 7.586 seconds with return value 0*/