数据结构之快排
来源:互联网 发布:手机紫光灯软件 编辑:程序博客网 时间:2024/04/29 09:18
import java.util.Random;public class QuickSork { //TODO 变量名一定要统一 private final static int cutoff=10;//插入排序界限 public static void main(String[] args) { // TODO Auto-generated method stub Random random = new Random(); int array2[] = new int [100]; for (int i = 0; i < array2.length; i++) { array2[i]= random.nextInt(100); } for (int i = 0; i < array2.length; i++) { System.out.print(array2[i]+" "); } System.out.println(); QuickSort(array2); for (int i = 0; i < array2.length; i++) { System.out.print(array2[i]+" "); } System.out.print("#"); } static void QuickSort(int[] array){ if(array==null) return ; Qsort(array,0,array.length-1); //递归调用 } static int median3(int[] array, int l, int r){ //取三个数的中间值,得到了 left<mid<right //将pivot 放在right- 1 的位置 ,能减少排序的次数 int m=(l+r)/2; if(array[l]>array[m]){ int temp = array[l]; array[l]=array[m]; array[m]=temp; } if(array[l]>array[r]){ int temp =array[l]; array[l]=array[r]; array[r]=temp; } //此时 l 上的元素是最小的 if(array[m]>array[r]){ int temp = array[m]; array[m]=array[r]; array[r]=temp; }// 将pivot 放在r-1的位置上 int temp=array[m]; array[m]=array[r-1]; array[r-1]=temp; return temp; } private static void Qsort(int[] array,final int left,final int right){ if(left+cutoff<right){ //将枢纽元放在了right - 1 的位置上 int pivot = median3(array,left,right); int l=left,r=right-1; while(true){//因为经过了 meidian3 的处理,得到了 left<mid<right 的序列 ,相当于有了两个哨兵 //先移动在比较,因为如果先比较的话可能会导致死循环 while(array[++l]<pivot){ } while(array[--r]>pivot){ } if(l<r){//控制条件 int temp=array[l]; array[l]=array[r]; array[r]=temp; }else{ break; } } int temp=array[l]; array[l]=array[right-1]; array[right-1]=temp; Qsort(array,left,l-1); Qsort(array,l+1,right); }else{ //选择排序或者希尔排序 //TODO 应该统一接口 InsertSort.InsertSort(array, left, right); } }}
阅读全文
0 0
- 数据结构之快排
- 数据结构之快排
- 数据结构之快排
- 数据结构之快排
- 郝斌数据结构之快排
- 快排代码 《数据结构》
- 【数据结构】快排
- 数据结构之排序(冒泡,选择,插入,快排)
- 数据结构实验之排序一:一趟快排
- 数据结构之快排(山理工3398)
- 数据结构实验之排序一:一趟快排
- SDUT3398数据结构实验之排序一:一趟快排
- 数据结构实验之排序一:一趟快排
- 数据结构实验之排序一:一趟快排
- 数据结构实验之排序一:一趟快排
- 数据结构实验之排序一:一趟快排
- SDUTACM 数据结构实验之排序一:一趟快排
- 数据结构实验之排序一:一趟快排
- ContextLoaderListener RequestContextListener
- UVA 12034<递推>
- ContentProvider
- hadoop 启动的时候datanode报错 Problem connecting to server
- 如何与测试team协调
- 数据结构之快排
- 扩展阅读 刷题(数据结构/算法)的网站介绍
- 八大排序算法总结之二(简单选择算法,堆排序,归并排序,基数排序)
- webView 对 iframe 的兼容性问题
- 把玩ArgbEvaluator
- Android布局:LinearLayout、FrameLayout和RelativeLayout,AbsoluteLayout
- <整理>将项目打包成runable jar包并运行遇到的问题及解决办法记录。
- Hibernate的Cascade属性以及和inverse的区别
- C++图的邻接表表示方法