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"); } }
相关文章推荐
- Java常用算法之冒泡排序法示例
- Java实现常用权限控制算法
- 数组介绍及常用算法的 java 实现
- Java常用排序算法之堆排序
- java数组及常用算法
- java例程练习(List常用算法)
- 【Java 常用算法】冒泡排序
- 图的常用算法的Java实现
- Java学习资料-Java常用算法-二分查找算法
- java中常用算法(面试)
- java语言实现常用算法(排序和查找)
- 常用算法Java实现之冒泡排序
- java 日历计算农历和节假日的常用类(包括除夕的算法)
- java常用算法之两个有序list的合并
- JAVA加密解密之常用签名算法
- 常用算法 - 各种排序算法 - JAVA
- 面试常用算法总结——排序算法(java版)
- Java学习资料-Java常用算法-直接插入算法
- java中常用算法(面试)
- java常用算法之堆排序