快排算法–Java
- 思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据逗比另一部分所有的数据都要笑,然后按照此方法分别进行排序,整个排序过程采用递归进行,以此到达整个数据有序。
- 运行截图:
- 代码:
public class KuaiPai {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] arr = {4,2,3,5,1};
int[] tag = kuaiPaiPaiXu(arr,0,arr.length-1);
System.out.println("排序后的结果为:");
for(int i : tag){
System.out.print(i+"\t");
}
}
/**
* 递归进行排序得到数组
* @param arr
* @param low
* @param higth
* @return
*/
private static int[] kuaiPaiPaiXu(int[] arr,int low,int higth) {
// TODO 自动生成的方法存根
if(low < higth){
int zhongjiefu = fenJieKey(arr, low, higth);
kuaiPaiPaiXu(arr, low, zhongjiefu-1);
kuaiPaiPaiXu(arr, zhongjiefu+1, higth);
}
return arr;
}
/**
* 数出分解限,也就是标杆一趟之后的位置
* @param arr
* @param low
* @param higth
* @return
*/
public static int fenJieKey(int[] arr,int low,int higth){
int xiabiao = arr[low]; //默认吧最小的元素作为中轴
while(low < higth){
while(low<higth && arr[higth] >= xiabiao){
higth--;
}
arr[low] = arr[higth];//比中轴小的移动到左边
while(low<higth && arr[low] <= xiabiao){
low++;
}
arr[higth] = arr[low];//比中轴大的移动到右边
}
arr[low] = xiabiao; //中轴记录到尾
return low; //返回中轴
}
}
选择排序的链接:(http://blog.youkuaiyun.com/qq_30000411/article/details/70185956)