package com.kero99.ygc.quickSort;
public class QuickSort {
/**
* 快速排序 类似于冒泡排序 基于交换排序的思想 对冒泡排序进行改进 提高了执行效率
* 设定一个分界值 将数组分为左右俩部分 大于等于分界值放到数组右边 小于的值放到数组左边
* 左右两边数据可以独立排序 同样左边放较小的 右边放较大的
* @param arr
* @param left
* @param right
*/
// private static final int SIZE = 18;
public void quickSort(int[] arr,int left,int right){//快速排序算法
int f,t;
int rtemp,ltemp;
ltemp=left;
rtemp=right;
f=arr[(left+right)/2];//分界值 当前数组则为30
while(ltemp<rtemp) //左边的值小于右边的 0 - 4
{
while(arr[ltemp]<f){//左边的小于分界值 下标++
++ltemp;
}
while(arr[rtemp]>f){//右边的大于分界值 下标--
--rtemp;
}
if(ltemp<=rtemp){
t=arr[ltemp];
arr[ltemp]=arr[rtemp];
arr[rtemp]=t;
--rtemp;
++ltemp;
}
}
if(ltemp==rtemp){
ltemp++;
}
if(left<rtemp){
quickSort(arr,left,ltemp-1);
}
if(ltemp<right){
quickSort(arr,rtemp+1,right);
}
}
public static void main(String[] args) {
int[] s={20,123,30,555,1000};
QuickSort qs=new QuickSort();
qs.quickSort(s, 0, s.length-1);
for(int i=0;i<s.length;i++){
System.out.println(s[i]);
}
// int[] shuzu=new int[SIZE];
// int i;
// for(i=0;i<SIZE;i++){
// shuzu[i]=(int)(100+Math.random()*(100+1));
// }
// QuickSort qs=new QuickSort();
// System.out.println("排序前");
// for(i=0;i<SIZE;i++){
// System.out.print(shuzu[i]+" ");
// }
// System.out.print("\n");
// System.out.println("排序后");
// qs.quickSort(shuzu,0,SIZE-1);
// for(i=0;i<SIZE;i++){
// System.out.print(shuzu[i]+" ");
// }
// System.out.print("\n");
}
}
java常用算法之快速排序详解
最新推荐文章于 2024-03-10 10:07:00 发布