希尔排序

来源:互联网 发布:永宏触摸屏软件 编辑:程序博客网 时间:2024/05/22 17:43
#include<stdio.h>#include<stdlib.h>void shell_sort(int v[], int n);void printarray(int a[], int n);main(void){    int a[5] = {5,4,3,2,1};    shell_sort(a, 5);}/*shell sort: increment*///add some printf to analysis processvoid shell_sort(int v[], int n){    int gap, i, j, temp;        for(gap = n/2; gap > 0; gap /= 2) {        printf("\ngap = %d\t\tV[j] - V[j+gap]\n", gap);        for(i = gap; i < n; i++){            printf("i = %d\t\t", i);            for(j = i-gap; j>=0; j-=gap) {                if(v[j]>v[j+gap]) {                temp = v[j];                v[j] = v[j+gap];                v[j+gap] = temp;                }                printf("[%2d]-[%2d]  ", j, j+gap);            }            printf("\n");        }    printf("after gap(%d):", gap);        //打印每趟排序后的结果    printarray(v, n);    }        }void printarray(int a[], int n){  int i;  for (i = 0; i < n; i++)    printf(" %d", a[i]);  printf("\n");}/* without analysisvoid shell_sort(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 = j-gap; j>=0 && v[j]>v[j+gap]; j-=gap) {                temp = v[j];                v[j] = v[j+gap];                v[j+gap] = temp;            }}*/


原创粉丝点击