快速排序算法代码实现

来源:互联网 发布:aris 7.1 软件下载 编辑:程序博客网 时间:2024/05/21 10:36


package datastucture;/** * 快速排序:是对起泡排序的一种改进,它的基本思想是:通过一趟排序将待排序记录分割成独立的两部分, * 其汇总一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分继续进行排序,已达到 * 整个序列有序。快速排序是一种不稳定的排序算法,时间复杂度为O(n*lg(n))。 * @author win7 * */public class QuickSort {/** * 一趟快速排序,使数组前半部分小于pivotkey,后半部分大于pivotkey * @param array * @param low * @param high * @return */public static int Patition(int [] array,int low,int high){int pivotkey=array[low];while(low<high){//System.out.println("low="+low+"||high="+high);while(low<high&&array[high]>=pivotkey) high--;array[low]=array[high];while(low<high&&array[low]<=pivotkey) low++;array[high]=array[low];}array[low]=pivotkey;return low;}/** * 使用递归的方式,对数组进行快速排序 * @param array * @param low * @param high * @return */public static int [] QSort(int [] array,int low,int high){if(low>=high)return array;int pivotkey=Patition(array,low,high);//System.out.println("pivotkey="+pivotkey);QSort(array,low,pivotkey-1);QSort(array,pivotkey+1,high);return array;}public static void main(String [] args){int [] array={12,4,2,5,9,4,3,10,11,3};for(int i=0;i<10;i++){System.out.print(" "+array[i]);}System.out.println();QuickSort.QSort(array, 0, 9);for(int i=0;i<10;i++){System.out.print(" "+array[i]);}}}