希尔排序

xiaoxiao2021-02-28  102

希尔排序是一个很难理解的排序,它是插入排序的一种表现形式。希尔排序是一种高效的排序,它将数据排成接近升序,在按插入排序,这样的排序很高效。

第一种代码实现是用一个do….while 循环; 第二种用两个while循环;

void display (int *a, int len) { int i; for (i = 0; i < len; i++) printf("M", a[i]); printf ("\n"); } int main() { int a[10] = {5,6,7,8,9,0,34,1,3,2}; int len = sizeof(a)/sizeof(s[0]); int i,j,get; int d = len; //d代表每一次的步长 do { d = d/3 + 1; for (i = d; i < len; i++) { for (i = d; i < len; i++) { get = a[i]; j = j - d; } a[j+d] = get; } }wwhile (d > 1); display (a, len); return 0; } int main () { int a[10] = {5,6,7,8,9,0,34,1,3,2}; int len = sizeof(a) / szieof(a[0]); int i,j,get; int d = 0; //代表每一步的步长 while (d < len) { d = d * 3 +1; // 0 1 4 13 } while (d >= 1) { for (i = d; i < len; i++) { get = a[i]; j = j - d; while (j >= 0 && a[j] > get) { a[j+d] = a[j]; j -= d; } a[j+d] = get; } d = (d-1) / 3; //4 1 0 } display (a, len); return 0; }
转载请注明原文地址: https://www.6miu.com/read-71919.html

最新回复(0)