入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Java常见排序:(三)快速排序

创建时间:2016-10-07 投稿人: 浏览次数:627

快速排序是一种非常快的交换排序方法,思路很简单,将待排的数据序列中任意取一个数据作为分界值,所有比这个值小的放在左边,比他大的放在右边。形成左右两个子序列,左边的值都比分界值小,右边的值都比分界大。接下来对左右两个子序列进行递归,两个子序列重新选择中心元素并按照上述规则调整,直到每个字序列中只剩一个元素。

快速排序 [时间复杂度:O(nlogn)、空间复杂度:O(log2n)、不稳定]

快速排序的具体实现代码

package com.wpl.mysort;

//实现快速排序
public class QuickSort {

	public static void quick_sort(int s[], int l, int r)  
	{  
	    if (l < r)  
	    {  
	        //将中间的这个数和第一个数交换 参见注1  
	        int i = l, j = r, x = s[l];  
	        while (i < j)  
	        {  
	            while(i < j && s[j] >= x) // 从右向左找第一个小于x的数  
	                j--;    
	            if(i < j)   
	                s[i++] = s[j];  
	              
	            while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数  
	                i++;    
	            if(i < j)   
	                s[j--] = s[i];  
	        }  
	        s[i] = x;  
	        quick_sort(s, l, i - 1); // 递归调用   
	        quick_sort(s, i + 1, r);  
	    }
	}
	    
	
	public static void main(String[] args) {
		int []test={23,2,34,8,34,28,98,89,13,8,33,56,75,67};
		quick_sort(test,0,test.length-1);
		for(int i=0;i<test.length;i++)
		{
			System.out.print(test[i]+" ");
		}
	}
	
}


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。