C 语言编程的排序方法
数据的排序是学习 C 语言经常碰到的问题?所谓排序是指把一组杂乱无章的数
按
照大小顺序排列。包括整数、实数、字符及字符串排序。C 语言编程中排序的方
法
很多,?这里归纳较常用的几种排序方法。它们同样适合于其他高级语言。
Shell 排序
Shell 排序是以发明者命名的一种较快的排序方法。Shell 排序基本算法思
想
是:将整个无序序列分割成若干小的子序分别进行插入排序。
子序列的分割方法为:将相隔某个增量 h 的元素构成一个子序列。在排序过
程
中,逐次减小这个增量,?最后当 h 减到 1 时,进行一次插入排序,排序就完成。
在本函数中,增量序列取 ht=2t-1,1 tlog2n 其中 n 为待排序序列的长度。
例:(/* 将输入的数据排序后,输出一个测试 Shell 排序的主函数*/)
#define SIZE 10
main() {
void shell();
int d[SIZE],i;
printf(“Input %d numbers",SIZE);
for(i=0;i
scanf(“%d",&d[i]);
shell(d,SIZE);
printf(“After sort:")
for(i=0;i
printf(“%5d",d[i]);