随笔分类 -  排序

摘要:一、什么是排序算法的稳定性 假设在数列中存在a[ i ] = a[ j ]。若在排序之前,a[ i ]在a[ j ]前面;并且排序之后,a[ i ]仍然在a[ j ]前面。则这个排序算法是稳定的! 二、选择哪种排序算法 (1)当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排 阅读全文
posted @ 2018-09-04 08:29 GGBeng 阅读(460) 评论(0) 推荐(0) 编辑
摘要:一、基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以使整个序列有序。 在分割的过程中,枢纽元的选择至关重要。原因如下: (1)两部分数据是以枢纽元为分界点,小于等于枢纽元 阅读全文
posted @ 2018-09-04 00:09 GGBeng 阅读(296) 评论(0) 推荐(0) 编辑
摘要:一、基本思想 对于一个待排序的序列,递归地将前半部分数据和后半部分数据各自归并排序,得到排序后的两部分数据,然后合并这两个部分。 归并算法采用分而治之的策略: a. 将问题分成一些小的问题然后递归求解; b. 将分的阶段解得的各个答案“修补”到一起。 可以看到这种结构很像一棵完全二叉树,故我们可以采 阅读全文
posted @ 2018-09-03 22:22 GGBeng 阅读(194) 评论(0) 推荐(0) 编辑
摘要:一、介绍 堆排序属于选择排序,它是利用堆这种数据结构而设计的一种排序算法。 升序排序采用最大堆,而降序排序采用最小堆。 二、基本思想 将待排序的数列构造成一个最大堆,每次都取堆顶的元素,将其放在数列的最后面,然后将剩余的元素重新调整为最大堆,依次类推,最终得到升序的序列。 主要过程:构建最大堆 + 阅读全文
posted @ 2018-09-03 20:54 GGBeng 阅读(212) 评论(0) 推荐(0) 编辑
摘要:一、介绍 希尔排序属于插入排序,它是对直接插入排序改进后的一个更高效的版本,也称为缩小增量排序。 该算法是冲破O(n2)的第一批算法之一,它的平均复杂度为O(n1.3),最坏时间复杂度为O(n2)。 二、基本思想 对于一个具有n个元素的数组,取一个增量(gap)将其分组(距离为gap的倍数的元素放在 阅读全文
posted @ 2018-09-03 19:44 GGBeng 阅读(216) 评论(0) 推荐(0) 编辑
摘要:一、选择排序 1. 基本思想 第一次从R[0]~R[n-1]中选取最小值,与R[0]交换; 第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;….; 第 i 次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;….; 第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n 阅读全文
posted @ 2018-09-03 17:16 GGBeng 阅读(398) 评论(0) 推荐(0) 编辑