快排+java实现
Posted 嘿boom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快排+java实现相关的知识,希望对你有一定的参考价值。
import java.util.Arrays; public class QuickSort { //三数取中法。取出不大不小的那个位置 public static int getPivotPos(int[] a,int low,int high) { int mid=(low+high)/2; int pos=low; int minpos=low; int maxpos=low; if(a[mid]<a[minpos]) minpos=mid; if(a[high]<a[minpos]) minpos=high; if(a[mid]>a[maxpos]) maxpos=mid; if(a[high]>a[maxpos]) maxpos=high; if(low!=minpos&&low!=maxpos) pos=low; if(mid!=minpos&&mid!=maxpos) pos=mid; if(high!=minpos&&high!=maxpos) pos=high; return pos; } //划分,取出枢纽位置 public static int partition(int[] a,int low,int high) { int pivotpos=getPivotPos(a,low,high); int pivot=a[pivotpos]; int temp=pivot; a[pivotpos]=a[low]; a[low]=temp; while(low<high) { while(low<high&&a[high]>=pivot) high--; a[low]=a[high]; while(low<high&&a[low]<=pivot) low++; a[high]=a[low]; } a[low]=pivot; return low; } //快排 public static void quickSort(int[] a,int low,int high) { if(low<high) { int pivotpos=partition(a,low,high); quickSort(a,low,pivotpos-1); quickSort(a,pivotpos+1,high); } } //重载快排 public static void quickSort(int[] a) { if(a.length==0) return; int low=0; int high=a.length-1; quickSort(a,low,high); } public static void main(String[] args) { int[] a= {12,32,24,99,54,76,48}; quickSort(a); System.out.println(Arrays.toString(a)); } }
以上是关于快排+java实现的主要内容,如果未能解决你的问题,请参考以下文章