摘要:
1. 工作原理(定义) 桶排序的思想近乎彻底的分治思想。桶排序是鸽巢排序的一种归纳结果。 桶排序 (Bucket sort)或所谓的箱排序,是一个非比较排序算法,是基于映射函数实现的。工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行 阅读全文
摘要:
核心部分 1. 实现外部排序的两个过程: 2. 时间组成: 与归并的趟数有关 k要大 —– 传统方法 会引起内部归并时间增大 赢者树 败者树(目的:提高在k个归并串中当前值中找到最小值的效率) m要小 —– 置换选择排序 Huffman(归并的顺序,对外存的I/O次数降到最低) k要大 —– 传统方 阅读全文
摘要:
1. 工作原理(定义) 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log( 阅读全文
摘要:
1. 工作原理(定义) 鸽巢排序(Pigeonhole sort),也被称作基数分类,是一种时间复杂度为O(n)(大O符号)且在不可避免遍历每一个元素并且排序的情况下效率最好的一种排序算法。 2. 算法步骤 2. 算法步骤 1. 给定一个待排序数组,创建一个备用数组(鸽巢),并初始化元素为0,备用数 阅读全文
摘要:
1. 工作原理(定义) 核心思想:冒泡排序是一种典型的 交换排序 ,通过比较相邻元素大小来决定是否交换位置 冒泡排序的思想:不停地比较相邻的两个记录,如果相邻的两个记录的次序是反序则交换,直到所有的记录都已经排好序了(使关键字最小或最大的记录如气泡一般逐渐往上“漂浮”直至“水面”,所以叫冒泡排序)。 阅读全文
摘要:
1. 工作原理(定义) 核心思想:鸡尾酒排序是冒泡排序的一种改进和变型 ,又称“双向冒泡排序”,鸡尾酒排序是从低到高然后从高到低来回排序(选出最大和最小项),比冒泡排序的效率稍微好一点,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。 2. 算法步骤 1. 先对数组从左到右进 阅读全文
摘要:
1. 工作原理(定义) 快速排序(Quicksort)是对冒泡排序的一种改进。(分治法策略) 快速排序的基本思想是在待排序的n个记录中任取一个记录(通常取第一个记录)作为基准,把该记录放入适当位置后,数据序列被此记录划分成两部分,分别是比基准小和比基准大的记录;然后再对基准两边的序列用同样的策略,分 阅读全文
摘要:
1. 工作原理(定义) 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,指的是将两个已经排序的序列合并成一个序列的操作。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法: 自上而下 阅读全文
摘要:
1. 工作原理(定义) 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 基数排序(radix sort)属于“分配式排序”(distribution s 阅读全文
摘要:
1. 工作原理(定义) 选择排序(Selection sort)是一种简单直观的排序算法。它在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 2. 算法步骤 3. 动画演示 4. 阅读全文
摘要:
1. 工作原理(定义) 树形选择排序(Tree Selection Sort),又称锦标赛排序(Tournament Sort),是一种按照锦标赛思想进行选择排序的方法。 首先对n个记录的关键字进行两两比较,然后在其中[n/2](向上取整)个较小者之间再进行两两比较,如此重复,直至选出最小关键字的记 阅读全文
摘要:
1. 工作原理(定义) 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法: 同时,我们对堆中的结点按层进行编号, 阅读全文
摘要:
1. 工作原理(定义) 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。 希尔排序实质上是一种分组 阅读全文
摘要:
1. 工作原理(定义) 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复 阅读全文
摘要:
1. 工作原理(定义) 二分插入排序(Binary Insertion Sort,折半插入排序 OR 拆半插入排序),采用折半查找方法。 二分查找插入排序的原理:是直接插入排序的一个变种;区别是:在有序区中查找新元素插入位置时,为了减少元素比较次数提高效率,采用二分查找算法进行插入位置的确定。 2. 阅读全文
摘要:
1. 定义 排序是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。 内部排序:若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。【衡量内排序的效率是数据的比较次数】 外部排序:若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外 阅读全文