希尔排序
希尔排序
不知道怎么证明希尔排序的正确性
#include<stdio.h> void view(int Av[]); void shellsort(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 v[]={1,5,4,3,2,6,7,8}; shellsort(v,8); view(v); getchar(); getchar(); return 0; } void view(int v[]){//显示A数组当前状态 for(int i=0;i<8;i++){ putchar(v[i]+'0'); putchar(' '); } putchar('\n'); }
运行结果