摘要: 各种排序算法总结 空间复杂度: In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。 Out-place sort:归并排序、计数排序、基数排序、桶排序。 稳定性: stable sort:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶 阅读全文
posted @ 2016-10-05 21:32 米琪儿 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 堆排序 数据结构 数组 最差时间复杂度 O(n*log n) 最优时间复杂度 O(n*log n) 平均时间复杂度 O(n*log n) 最差空间复杂度 О(n) total, O(1) auxiliary 1、堆的基础知识 堆节点的访问 通常堆是通过一维数组来实现的。在数组起始位置为0的情形中: 阅读全文
posted @ 2016-10-05 00:39 米琪儿 阅读(582) 评论(0) 推荐(0) 编辑
摘要: 归并排序 1、算法思想 归并排序包括两个步骤,分别为: 第一,分解:分解待排序的n个元素的序列成各具n/2个元素的子序列; 第二,合并:合并两个已排序的子序列——这是核心部分! 递归版原理如下(假设序列共有n个元素): 2、伪代码 我是栗子,栗子,栗子 1 2 38 5 7 6 4 10 Merge 阅读全文
posted @ 2016-10-04 21:15 米琪儿 阅读(3071) 评论(0) 推荐(0) 编辑
摘要: 直接选择排序 1、算法思想 2、伪代码 3、实现 阅读全文
posted @ 2016-10-04 17:59 米琪儿 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 希尔排序 1、算法思想 我是栗子,栗子,栗子 假设有这样一组数[ 13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10 ],如果我们以步长为5开始进行排序,我们可以通过将这列表放在有5列的表中来更好地描述算法,这样他们就应该看起来是这样: 然后我们对每列进行 阅读全文
posted @ 2016-10-04 17:25 米琪儿 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 插入排序 工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 https://zh.w 阅读全文
posted @ 2016-10-04 15:46 米琪儿 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 快速排序 https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F 1、算法思想 递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteratio 阅读全文
posted @ 2016-10-04 12:09 米琪儿 阅读(1049) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序 https://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F#-.7Bzh-hant:.E8.99.9B.E6.93.AC.E7.A2.BC.3Bzh-hans:.E4.BC.AA.E4.BB.A3.E7.A0.81. 阅读全文
posted @ 2016-10-03 23:13 米琪儿 阅读(11367) 评论(0) 推荐(0) 编辑
摘要: 字符串的反序存放: 阅读全文
posted @ 2016-09-30 21:13 米琪儿 阅读(889) 评论(0) 推荐(0) 编辑
摘要: 矩阵转置:即矩阵的行列元素互换。 阅读全文
posted @ 2016-09-30 20:54 米琪儿 阅读(474) 评论(0) 推荐(0) 编辑