希尔排序(Shell's Sort)的C语言实现
2016-01-03 21:17
791 查看
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia
希尔排序(Shell's Sort)又称“缩小增量排序”(Diminishing Increment Sort)的基本思想不断缩小步长后分组排序,具体步骤为
演示实例:
C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp)
希尔排序(Shell's Sort)又称“缩小增量排序”(Diminishing Increment Sort)的基本思想不断缩小步长后分组排序,具体步骤为
演示实例:
C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp)
#include <stdio.h> #define LEN 9 typedef float keyType; typedef struct{ keyType score; char name[20]; }student; typedef struct{ int length=LEN; student stu[LEN]; }sqList; void shellInsert(sqList &L,int step){ for(int k=1;k<=step&&k<L.length;k++) { for(int i=k+step;i<L.length;i+=step){ L.stu[0]=L.stu[i]; int j; for(j=i-step;L.stu[j].score<L.stu[0].score&&j>0&&(j+step)<L.length;j=j-step) { L.stu[j+step]=L.stu[j]; } L.stu[j+step]=L.stu[0]; } } } void shellSort(sqList &L){ int delta[5]={7,6,5,3,1}; for(int k=0;k<5;k++){ shellInsert(L,delta[k]); } } int main(){ sqList L; for(int i=1;i<L.length;i++){ printf("\n请输入第%d个学生的姓名:",i); gets(L.stu[i].name); printf("分数:"); scanf("%f",&(L.stu[i].score)); getchar(); } shellSort(L); for(int i=1;i<L.length;i++){ printf("\n学生%s 分数%f 第%d名",L.stu[i].name,L.stu[i].score,i); } return 1; }
相关文章推荐
- 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
- shell编程基础
- 部署、收回和删除解决方式----STSADM和PowerShell
- 【Shell脚本学习25】Shell文件包含
- 【Shell脚本学习24】Shell输入输出重定向:Shell Here Document,/dev/null文件
- 【Shell脚本学习23】Shell函数参数
- 【Shell脚本学习22】Shell 函数:Shell函数返回值、删除函数、在终端调用函数
- 【Shell脚本学习21】Shell break和continue命令
- 【Shell脚本学习20】Shell until循环
- 【Shell脚本学习19】Shell while循环
- 【Shell脚本学习18】Shell for循环
- 【Shell脚本学习17】Shell case esac语句
- 【Shell脚本学习16】Shell if else语句
- 【Shell脚本学习15】shell printf命令:格式化输出语句
- 【Shell脚本学习14】Shell echo命令
- 【Shell脚本学习13】Shell数组:shell数组的定义、数组长度
- 【Shell脚本学习12】Shell字符串
- 【Shell脚本学习11】Shell注释
- 【Shell脚本学习10】Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符