java快速排序的两种写法

快排写法

写法一:

package quickSort;
 
public class QuickSort {
	private static int count;
	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		int[] num = {3,45,78,64,52,11,64,55,99,11,18};
		System.out.println(arrayToString(num,"未排序"));
		QuickSort(num,0,num.length-1);
		System.out.println(arrayToString(num,"排序"));
		System.out.println("数组个数:"+num.length);
		System.out.println("循环次数:"+count);
		
	}
	/**
	 * 快速排序
	 * @param num	排序的数组
	 * @param left	数组的前针
	 * @param right 数组后针
	 */
	private static void QuickSort(int[] num, int left, int right) {
		//如果left等于right,即数组只有一个元素,直接返回
		if(left>=right) {
			return;
		}
		//设置最左边的元素为基准值
		int key=num[left];
		//数组中比key小的放在左边,比key大的放在右边,key值下标为i
		int i=left;
		int j=right;
		while(i=key && i

写法二:

 /******************************************************* 
     *快速排序 (比较排序类) 
     *每次排序将待排记录分割两部分,一部分都比关键字小,一部分都比关键字大 
     ********/  
    public void quickSort(int[] L) {          
        Qsort(L,1,L.length-1);  
    }  
      
    public void Qsort(int[] L,int low,int high) {  
        int pivot;  
        if(low=pivotkey) {  //从后往前找到比key小的放到前面去  
                high--;  
            }  
            swap(L,low,high);     
            while(low

代码来源,节选自:

https://blog.csdn.net/qq_36186690/article/details/82470451

https://blog.csdn.net/weixin_30363263/article/details/82462088

你可能感兴趣的:(《java面试题全集》疑点详解,java面试算法,java,快速排序,快排)