MergeSort

大脑不够用了,补一个好玩的视频

http://v.youku.com/v_show/id_XMzMyODk5Njg4.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2

基本思路首先是分,将数组平分两边,然后每边进行排序,排序后再将两边归并成一整个有序的数组;这阶段通过递归完成,所以归并=递归+合并

一个数组排序,分解为两个已经排序好的数组,不停地递归

来[……]

Read more

Java简易二叉树排序

通过一个简单的二叉树例子,捋一捋思考的思路

比如需要对下列数组进行排序

int[] arr = {17, 12, 19, 10, 15, 18, 25, 8, 11, 13, 16, 22};

这里可以根据数组里的元素创建一个二叉树,要求就是父节点的值大于左子树节点的值,不大于右子树节点的值;当然父节点的值不小于左子树节点的值,小于右子树节点的值也行,最后再按中序遍历进行输出,也就是左中右,那么[……]

Read more

快速排序

快速排序WIKI上这么描述的:

快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists),步骤为:

(1)从数列中挑出一个元素,称为“基准”(pivot)

(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边),在这个分区退出之后,该基准就处于数列的中间位置,这个称为分区([……]

Read more