快速排序
原理:相当于是让从数组两头的位置,往中间走,然后与基准数字比较,大的放右边,小的放左边,第一遍比较之后找到基准数字,放到中间某个位置index上,之后将数组分成两半start到index-1,index+1到end,之后在将这两段递归调用自己的方法,一直递归下去,就可以将数组排序。
下面是代码实现:
package com.zhang.sort;
public class Demo03 {
public void quickSort(int[] arrays, int start, int end){
if (start<end){
int index = getIndex(arrays, start, end); //找到基准位置
quickSort(arrays, start, index-1);
quickSort(arrays, index+1, end);
}
}
private int getIndex(int[] arrays, int start, int end) {
int i = start;
int j = end;
int x = arrays[i];
while (i<j){
while (i<j && arrays[j]>=x){
j--;
}
if (i<j){
arrays[i]= arrays[j];
i++;
}
while (i<j && arrays[i]<x){
i++;
}
if (i<j){
arrays[j] = arrays[i];
j--;
}
}
arrays[i] = x;
return i;
}
}
应用:
package com.zhang.sort;
import java.util.Arrays;
public class Demo03Application {
public static void main(String[] args) {
int[] arrays = {3,4,5,6,87,98,65,34,21,11,13,23,43};
Demo03 demo03 = new Demo03();
demo03.quickSort(arrays, 0, arrays.length-1);
System.out.println(Arrays.toString(arrays));
}
}