摘要: 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重,其重要性无需多言。下文将介绍常用的如下排序方法,对它们进行简单的分析和比较,并提供 C/C++ 语言实现。 所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如上五种: 1、插入排序(直接插入排序、希尔排序); 2、交换排序(冒泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、桶排序(桶排序,基数排序); 其中插入排序、交换排序、选择排序、选择排序、归并排序都是基于关键字比较的排序,比较排序的平均时间复杂度好不过 O(nlogn)。 而桶排序是基于映射的排序,其平均时间复杂度可达到 O(n),但桶排序需要额外的空间来存储经过映射的记录。 通常在待排序记录较多的时候,基于映射的排序 O(n) 比基于比较的排序 O(nlogn) 的效率要高得多,这很好理解:用空间换时间。(查找算法其实也是如此,散列查找比其他查找算法的效率要高得多)。 另外,在讨论一个排序算 阅读全文
posted @ 2011-03-03 21:54 飘飘白云 阅读(597) 评论(0) 推荐(0) 编辑
本博客遵循 Creative Commons License “署名-非商业用途-保持一致”创作共用协议。 与我联系