Java算法-快速排序

Posted 王萌萌萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java算法-快速排序相关的知识,希望对你有一定的参考价值。


通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的数据均比关键字小,而另一部分记录的数据均比关键字大,则分别对这两部分继续进行排序,直到整个序列有序。


把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。

这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。


算法代码:

1.查找中轴(最低位作为中轴)所在位置

	public static int getMiddle(int[] numbers,int low,int high)
		int temp = numbers[low];
		while (low<high) 
			while(low<high && numbers[high] > temp)
				high--;
			
			numbers[low]=numbers[high];
			while (low<high && numbers[low] < temp) 
				low++;
			
			numbers[high]=numbers[low];
			
		
		numbers[low]=temp;
		return low;
	


2、 递归形式的分治排序算法:

	public static void quickSort(int[] numbers,int low,int high)
		if (low<high) 
			int middle = getMiddle(numbers, low, high);
			quickSort(numbers, low, middle-1);
			quickSort(numbers, middle-1, high);
		
	


3..快速排序提供方法调用

	public static void quick(int[] numbers)
		if (numbers.length > 0) 
			quickSort(numbers, 0, numbers.length-1);
		
	



以上是关于Java算法-快速排序的主要内容,如果未能解决你的问题,请参考以下文章

八大种必知排序算法 冒泡排序快速排序 (续)

快速排序与GDB调试

Java算法-快速排序

c++快速排序

快速排序/快速选择算法

快速排序