摘要: 希尔(Shell)排序是插入排序的扩展,它允许非相邻的数据项进行交换来提高执行效率。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成(n除以d1)个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。例如:初始:d=5 49 38 65 97 76 13 27 49 55 04 49 13 |-------------------| 38 27 |- 阅读全文
posted @ 2012-09-12 20:15 lscheng 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序是我学习的最早的排序算法。它很简单:遍历文件,如果临近的两个元素的顺序不对,那么就将两者交换,重复这样的操作直到整个文件排好序。一种实现算法:#include <iostream>#include <stdlib.h>using namespace std;template <typename Item>void compexch(Item &A,Item &B){ if (B<A) exch(A,B);}template <typename Item>void bubble(Item a[], int l, int 阅读全文
posted @ 2012-09-12 20:03 lscheng 阅读(181) 评论(0) 推荐(0) 编辑