希尔排序 缩小增量排序
2014-04-30 12:17
155 查看
#include <stdio.h> #include <stdlib.h> //严格按照算法写 1A 1B 1C 排好后 排2A 2B 2C void ShellSort1(int a[],int len) { int i,j,gap,temp,k; for(gap=len/2;gap>0;gap/=2) { for(i=0;i<gap;i++) for(j=i+gap;j<len;j+=gap) { if(a[j]<a[j-gap]) { temp=a[j]; k=j-gap; while(k>=0&&a[k]>temp) { a[k+gap]=a[k]; k-=gap; } a[k+gap]=temp; } } } } // 2B 2B 2C 排好后 排3A 3B 3C void ShellSort2(int a[],int len) { int j,gap,temp,k; for(gap=len/2;gap>0;gap/=2) { for(j=gap;j<len;j++) { if(a[j]<a[j-gap]) { temp=a[j]; k=j-gap; while(k>=0&&a[k]>temp) { a[k+gap]=a[k]; k-=gap; } a[k+gap]=temp; } } } } //边比较边交换 void ShellSort3(int a[],int len) { int i,j,gap,temp,k; for(gap=len/2;gap>0;gap/=2) { for(j=gap;j<len;j++) for(i=j-gap; i>=0 && a[i+gap]<a[i];i-=gap) { temp=a[i+gap]; a[i+gap]=a[i]; a[i]=temp; } } } int main(int argc, char *argv[]) { int i; int a[]={4,5,2,6,9,7,5,74,56,89,132}; int b[]={4,5,2,6,9,7,5,74,56,89,132}; int c[]={4,5,2,6,9,7,5,74,56,89,132}; ShellSort1(a,11); for(i=0;i<11;i++) printf("%d ",a[i]); printf("\n"); ShellSort2(b,11); for(i=0;i<11;i++) printf("%d ",b[i]); printf("\n"); ShellSort3(c,11); for(i=0;i<11;i++) printf("%d ",c[i]); printf("\n"); system("PAUSE"); return 0; }
相关文章推荐
- 一天一排序之“希尔排序(缩小增量排序)”
- 八大排序算法 之 希尔排序(缩小增量排序)
- 排序算法(八)希尔排序(缩小增量排序)
- 排序 - 希尔排序(缩小增量排序)
- 排序-插入排序-希尔排序(缩小增量排序)-数据结构(28)
- 排序 - 希尔排序(缩小增量排序)
- 插入排序、折半插入排序、希尔排序(缩小增量排序)
- Java 希尔排序(缩小增量排序)
- 排序算法的C++ && Python实现---希尔排序(缩小增量排序)
- 数据结构之插入排序之希尔排序(缩小增量排序)—参考整理严蔚敏数据结构
- 希尔排序(缩小增量排序)
- 算法【4】:希尔排序(缩小增量排序)
- 希尔排序(缩小增量排序)
- ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
- 希尔排序(缩小增量排序)
- 希尔排序(增量排序)
- shell排序,希尔排序,递减增量排序。
- 排序五之希尔排序(缩小增量排序)
- 一点一点的积累算法JAVA版之希尔排序(最小增量排序)
- 数据结构----希尔排序(最小增量排序)