快速排序的实现(java)
2016-04-17 16:48
316 查看
java下 快速排序的实现
package quicksort; public class myquicksort { public static void quicksort(int[] array,int start,int end){ int q=0; //存储 切分的位置 左边的都比这个数大,右边的都比这个位置小 if(start<end){ System.out.println(" start :"+start+"end :"+end); q=partition(array,start,end); quicksort(array,start,q-1); quicksort(array,q,end); } } public static int partition(int[] array,int start,int end){ int index=start-1; int x=array[end]; int j=0; ArrayUtils.PrintArray(array); for(j=start;j<end;j++){ if(array[j]<=x){ index++; ArrayUtils.exchangeElements(array,j,index); } } //System.out.println("index+1: "+(index+1) +"end: "+(end)); System.out.println("index:"+index); ArrayUtils.exchangeElements(array,index+1 ,end ); return index+1; } public static void main(String[] args) { // TODO Auto-generated method stub int[] array={5,2,4,6,1,3,22,36}; System.out.println("Before sort:"); ArrayUtils.PrintArray(array); System.out.println("array.length-1"+(array.length)); quicksort(array,0,array.length-1); System.out.println("after sort:"); ArrayUtils.PrintArray(array); } }
其中 partition这个函数实现了
以array 数组中 end 为标杆,比他小的都在他的左边,比他大得都在他的右边。
package quicksort; public class ArrayUtils { public static void PrintArray(int[] array){ System.out.print("{"); for(int i=0;i<array.length;i++){ System.out.print(array[i]); if(i<array.length -1){ System.out.print(","); } }System.out.print("}"); } public static void exchangeElements(int[] array,int index1,int index2){ int temp=array[index1]; array[index1]=array[index2]; array[index2]=temp; } }
相关文章推荐
- Java中堆内存和栈内存详解
- java泛型之带有两个类型参数的泛型示例
- Java 实现求最长回文子串
- Java写的自动抢购红米note手机(2016/4/6 米粉节)
- 算法导论习题:10.3-4 in JAVA
- 图片述说JVM运行时的故事(下)
- spring基础知识详解
- Windows Eclipse 调试 HBase
- Java Web乱码分析及解决方案
- InfoSphere Data Replication 11.3.3(CDC)为 Java 类配置用户出口
- 建立第一个spring boot ,就是这么简单
- Java反射机制DOME
- eclipse常用快捷键
- 中序表达式变成后序表达式 JAVA实现版本
- 图片述说JVM运行时的故事(上)
- 《java并发编程实战》读书笔记二 对象的发布与逸出
- 慕课 springmvc 起步 maven wbe
- JAVA IO(三)
- java之FileReader与FileWriter
- java文件的命名和类的执行