Java教程

Java写快速排序

本文主要是介绍Java写快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java写快速排序

时间复杂度:O(nlog2n)

public static void quickSort(int nums[],int left,int right){
	int l=left;
	int r=right;
	int key=nums[left];
	while(l<r){
		while(nums[r]>=key && l<r){
			r--;
		}
		while(nums[l]<=key && l<r){
			l++;
		}
		int temp=nums[l];
		nums[l]=nums[r];
		nums[r]=temp;
	}
	//当前i值是比标志值key小,应该放在key值左边,即对调key与nums[i]位置
	
	//交换标志值与快排完后的i
	//key=nums[left];在函数第三行
	nums[left]=nums[l];
	nums[l]=key;

	//递归完成对key值左右的子数组的快排
	quickSort(nums,left,l-1);
	quickSort(nums,l+1,right);
}

几种排序算法比较:

排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性
插入排序O(n2)O(n2)O(n)O(1)稳定
希尔排序O(n1.3)O(n2)O(n)O(1)不稳定
选择排序O(n2)O(n2)O(n2)O(1)不稳定
堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)不稳定
冒泡排序O(n2)O(n2)O(n)O(1)稳定
快速排序O(nlog2n)O(n2)O(nlog2n)O(nlog2n)不稳定
归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定
计数排序O(n+k)O(n+k)O(n+k)O(n+k)稳定
桶排序O(n+k)O(n2)O(n)O(n+k)稳定
基数排序O(n*k)O(n*k)O(n*k)O(n+k)稳定
这篇关于Java写快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!