数据结构13-排序方法之希尔排序的实例

来源:互联网 发布:centos 7 虚拟机上网 编辑:程序博客网 时间:2024/05/08 19:50

程序实现用希尔排序方法对数组序列从大到小的排列,并输出排序后的数列元素,代码如下所示:

#include"stdio.h"void shellsort(int k[],int n){int i,j,flag,gap=n;int tmp;while(gap>1){gap=gap/2;                   /*增量缩小,每次减半*/do{                          /*子序列应用冒泡排序*/flag=0;for(i=1;i<=n-gap;i++){j=i+gap;if(k[i]<k[j]){tmp=k[i];k[i]=k[j];k[j]=tmp;flag=1;}}}while(flag != 0);}}main(){int i,a[11]={-111,2,5,6,3,7,8,0,9,12,1};                                /*初始化序列,a[0]可任意置数*/printf("The orginal data array is\n");                                /*显示原序列之中的元素*/for(i=1;i<=10;i++)printf("%d ",a[i]);shellsort(a,10);                /*执行希尔排序*/printf("\nThe result of Shell's sorting for the array is\n");for(i=1;i<=10;i++)printf("%d ",a[i]);         /*输出排序后的结果*/getche();}


程序运行的结果如下图所示:

实例的分析:

       1.函数中的子序列应用的是优化版的冒泡排序,详细请见数据结构12。

0 0
原创粉丝点击