排序算法之快速排序:
排序算法精髓之处就是把标准数为界限 左边小于右边大于 调用递归 循环往复
package 交换排序;
import java.util.Arrays;
/**
* 交换排序算法之快速排序
* @author 13267
*
*/
public class QuickSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {2,3,5,9,8,4,1,44,0,5};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
/**
* 快速排序算法
* @param arr 进行排序的数组
* @param start 起始位置
* @param end 结束位置
*/
public static void sort(int[] arr,int start,int end) {
if(start<end) {
int low=start;//其实位置下标
int high=end;//结束位置下标
int stard=arr[start];//数组中第0个数字作为标准数字
while(low<high) {
//结束位置数据大于标准数 前移一位
while(low<high&&arr[high]>=stard) {
high--;
}
//后端赋值给前端
arr[low]=arr[high];
//起始位置小于标准数 后移一位
while(low<high&&arr[low]<=stard) {
low++;
}
//前端赋值给后端
arr[high]=arr[low];
}
//最后low和high重合位置就是标准数位置
arr[low]=stard;
sort(arr,start,low);
sort(arr,low+1,end);
}
}
}