studying
人心最苦处,最是拖泥带水
摘要: 如何在O(n)内获取一个数组比如{9, 1, 2, 8, 7, 3, 6, 4, 3, 5, 0, 9, 19, 39, 25, 34, 17, 24, 23, 34, 20}里面第K大的元素呢? 我们可以使用类似快排的分区方式,将第K大的元素限定在数组的左边或右边,递归求取。 我的Java代码实现 阅读全文
posted @ 2019-01-29 23:49 小白一只726 阅读(1167) 评论(2) 推荐(0) 编辑
摘要: 我个人觉得快速排序和归并排序有相似之处,都是用到了分治的思想,将大问题拆分成若干个小问题。 不同的地方是归并排序是先把大问题拆分好了之后再排序,而快速排序则是一边拆分,一边排序。 快速排序的原理就是,针对一个数组,我们任意选取数组中的一个数,将数组中的数与它一一比较,如果小于它呢,就放左边, 大于它 阅读全文
posted @ 2019-01-29 22:59 小白一只726 阅读(886) 评论(0) 推荐(0) 编辑
摘要: 归并排序是一种典型的用分治的思想解决问题的排序方式。 它的原理就是:将一个数组从中间分成两半,对分开的两半再分成两半,直到最终分到最小的单位(即单个元素)的时候, 将已经分开的数据两两合并,并且在合并的同时进行排序(先分解,再合并)。 将一个大的问题分而治之,拆分成若干个小问题,这就是分治的思想。 阅读全文
posted @ 2019-01-29 22:24 小白一只726 阅读(555) 评论(0) 推荐(0) 编辑