一、归并排序
该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
分割:
将数组从中点进行分割,分为左、右两个数组
递归分割左、右数组,直到数组长度小于2
归并:
如果需要合并,那么左右两数组已经有序了。
创建一个临时存储数组temp,比较两数组第一个元素,将较小的元素加入临时数组
若左右数组有一个为空,那么此时另一个数组一定大于temp中的所有元素,直接将其所有元素加入temp
二、快速排序
快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。
实现步骤:
1、选择枢纽元素median
2、将比median小的元素移动到数组左边,比median大的元素移动到数组右边
3、分别对median左侧和右侧的元素进行快速排序
寻找枢纽
找到left center right三个位置的值
判断并且进行交换三个值
把找到的枢纽移到right-1位置
开始找正确的位置
直到i>=j时停止循环 此时的i位置就是正确的位置
把枢纽放到正确的位置