主要思想:分治,分而治之。
我们在数组中去一个样板数据,就是基准数据,然后分别从前面比较和后面比较,从而进行交换。然后分别对较大的一部分数据与较小的一部分数据进行循环操作,直到只有一个数据为止。
一、中间值法
我这里采用中间数据为一个基准数据。
有一组数据 {6,4,8,7,9,1,3},数字7为基准。
- 第一次从后比较与从前比较交换数据得{6,4,3,7,9,1,8};
- 第二次从后比较与从前比较交换数据得{6,4,3,1,9,7,8};
- 第三次从后比较与从前比较交换数据得{6,4,3,1,7,9,8};
- 此刻,基准左边的数都小于基准,右边的数都大于基准。
只需根据当前基准把数组左右两边当成一个新的数组。同上进行重复排序,直到基准左右两边只剩一个数据即可。
代码片段
public static int[] quickSort(int[] t,int left,int right) {
int mid = (left+right)/2;
int temp