01 2018 档案

摘要:终于到了传说中的快速排序算法了,快速排序的思想和归并排序一样,都是采用分治思想,不同之处在于归并每次将数组一分为二,最后将小的数组进行比较,合并为大数组。快排是每次找一个主元,也就是基准数,按照这个基准数,把小于基准数的数放左边,大于基准数的数放右边,通过基准数来分组实现排序。所以快排的很重要一步就 阅读全文
posted @ 2018-01-23 22:54 稀算客 阅读(198) 评论(0) 推荐(0) 编辑
摘要:归并排序是一种分治算法。思想是把原数组切分成较小的数组,直到每个小数组只有一个位置,再将小数组归并成较大的数组,直到最后有一个完整有序的大数组。 js实现如下: 归并排序是一种稳定排序,无论最好情况和最坏情况时间复杂度为O(nlogn),空间复杂度为O(n)。 附:T(n)=2T(n/2)+cn; 阅读全文
posted @ 2018-01-14 22:21 稀算客 阅读(202) 评论(0) 推荐(0) 编辑
摘要:选排序的思路是首先从要排序的数组中选择最小的和目前的第一位交换位置,然后从剩下的数中选择最小的和第二个位置的数交换位置,再从剩下的数中选择最小的和第三个位置的数交换位置,以此类推,实现代码如下: 算法分析:无论最好或最坏情况,该算法的时间复杂度总是O(n2),因为每次要走第二个for循环找最小的数, 阅读全文
posted @ 2018-01-13 17:00 稀算客 阅读(120) 评论(0) 推荐(0) 编辑
摘要:插入排序的思路是我们默认数组的第一个元素是有序的,从第二个元素开始依次和前面的元素比较,如果前面的元素大,就将前面的元素往后移一位,如果前面的元素小,就把该元素放在前面元素的后面。其实就和我们玩扑克牌差不多的,每次拿牌后,把大牌放后面,小牌放前面。按照这个思路,实现了如下代码: 实现了之后看到大佬的 阅读全文
posted @ 2018-01-07 16:35 稀算客 阅读(226) 评论(0) 推荐(0) 编辑
摘要:在codewars上面刷题卡住刷不下去了,意识到自己算法方面的不足,准备写一些算法方面的文章,此为一。 冒泡排序是很常见简单的算法了,每次比较任何两个相邻的项,如果第一个比第二个大,则交换他们,就像气泡一样,冒泡排序因此得名。 代码实现如下: 这样每次循环把所循环的数组里最大的数放在最下面。为了判断 阅读全文
posted @ 2018-01-04 20:16 稀算客 阅读(256) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示