快速排序算法代码实现

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]);
		}
	}
	

}

    原文作者:排序算法
    原文地址: https://blog.csdn.net/witsmakemen/article/details/8900576
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞