快速排序

/**
 * 快速排序,没你想得那么简单
 * 注意:1 0 和4 4时的处理
 */
package test;

import java.util.Random;

public class Qusort {

	public static void qsort(int[] arr, int low, int high){
		if(low>=high)return;
		//System.out.println("\n新的全部序列---");
		//print(arr,0,arr.length-1);
		int len = high - low +1;
		int stand = arr[low];
		int i = low+1;
		int j = high;   //  
		//System.out.println("i="+i+", j="+j+", stand = "+stand);
		//为了处理1 0
		while(i<=j){
			//从右向左搜索小于stand的位置
			while(j>=i && arr[j]>=stand){
				j--;
			}
			//System.out.print("j = "+j+"  ");
			/**
			 * 从左向右搜索大于stand的位置【和上面必须至少有一个取等号(没有交集)!!
			 * -否则当i和j指向同一个等于stand的元素时(4,4),陷入外层while死循环
			 * --(内层while-while(j>=i && arr[j]>stand)和while(i<=j && arr[i]x[i+1]){
					System.out.print("error: ");
					for(int c=0; c

第二个小改变,比较 “=” 的区别

/**
 * 快速排序,没你想得那么简单
 * 注意:1 0 时的处理
 */
package test;

import java.util.Random;

public class QC {

	public static void qsort(int[] arr, int low, int high){
		if(low>=high)return;
		System.out.println("\n新的全部序列---");
		print(arr,0,arr.length-1);
		int len = high - low +1;
		int stand = arr[low];
		int i = low+1;
		int j = high;   //  
		//System.out.println("i="+i+", j="+j+", stand = "+stand);
		//小心处理1 0和0 1的情况
		while(ii && arr[j]>=stand){
				j--;
			}
			//System.out.print("j = "+j+"  ");
			/**
			 * 从左向右搜索大于等于stand的位置(和上面必须至少有一个取等号!!
			 * -否则当i和j指向同一个等于stand的元素时(4,4),陷入外层while死循环
			 * --(内层while-while(j>=i && arr[j]>stand)和while(i<=j && arr[i]=stand) i--;//(3,4)时,防止交换,变成(4,3)
		arr[low] = arr[i];
		arr[i] = stand;
		//System.out.print("\n本轮排序结束");
		//print(arr,low,high);
		qsort(arr, low, i-1);		
		qsort(arr, i+1, high);

	}
	public static void print(int[] x, int low, int high){
		System.out.print("输出");
		for(int i=low; i<=high; i++){			
			System.out.print(x[i]+" ");
		}
		System.out.println();
	}

	public static void print(int[] x){

	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n = 100;
		for(int m = 0; mx[i+1]){
					System.out.print("error: ");
					for(int c=0; c


你可能感兴趣的:(JAVA)