沈阳婚庆公司哪家好:有人知道C语言中有个叫shell排序的方法吗?

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 20:57:53
还可以再将shell排序的程序代码写下来吗?要求是C语言上的格式.

有啊,很出名的一个算法,叫希尔排序
希尔排序

希尔排序(Shell sort)也称“缩小增量排序”。它的做法不是每次一个元素挨一个元素的比较。而是先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。这样大大减少了记录移动次数,提高了排序效率。

算法思路:先取一个正整数d1(d1<n),把全部记录分成d1个组,所有距离为dl的倍数的记录看成是一组,然后在各组内进行插入排序;接着取d2(d2<d1),重复上述分组和排序操作;直到di=1 (i>=1),即所有记录成为一个组为止。希尔排序对增量序列的选择没有严格规定,一般选d1约为n/2,d2为d1/2,d3为d2/2,…,di=1。

那是一个经典的排序方法,不过不应该在C语言中,而应该是在数据结构中。目前可以实现这个算法的语言是很多的,不只C。

是很常见的 希尔排序 算法你上网找找看