您的位置:首页 > 编程语言 > Java开发

java常用算法之快速排序详解

2017-11-15 18:57 393 查看
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");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: