nlogn
快速排序和前面的冒泡排序一样,也是交换排序的一种
快速排序和前面的冒泡排序一样,也是交换排序的一种,但是他是基于分治的算法思想,元素进行位置交换时可以跨度很大,而冒泡中只能进行相邻元素的交换,这样可以减少很多交换次数 它的基本思想是:通过一趟排序讲要排序的序列分成两个子部分,其中一部分的所有数据要比另一部分的所有数据小,然后再按照这个方法对两个子部分也分别进行快速排序,这个过程可以递归进行。 1.一开始选定数组的最后一个元素5作为基准值,也就是最终排序结果应该是以5为界限划分为左右两边。 2.从左边开始,寻找比5大的值,然后与5进行调换(因为如果比5小的值本来就应该排在5前面,比5大的值调换之后就去到了5的后面),一路过来找到了7,将7与5调换,结束此次遍历
当我们要排序这样一个数组的时候
当我们要排序这样一个数组的时候,归并排序法首先将这个数组分成一半。如图: 然后想办法把左边的数组给排序,右边的数组给排序,之后呢再将它们归并起来。当然了当我们对左边的数组和右边的素组进行排序的时候,再分别将左边的数组和右边的数组分成一半,然后对每一个部分先排序,再归并
很迷,这道题想了好久,写了好几种解法
很迷,这道题想了好久,写了好几种解法,然后发布这篇文章之前又改了一次。现在的方案和代码量是我能想到的最优解。 难点在于如何在程序比较两个元素大小的次数不能超过 len(L1) + len(L2) 显然桶排序(o(2*(m+n))、冒泡排序(o(n^2))、快速排序(o(nlogn))统统不能用
