快速排序

概述

快速的升序排列(注意边界)

代码

package com.lilei.myes.es.pack1114;

import java.util.Random;

public class quick_sort {

	public static void main(String[] args) {
		Random rand = new Random();

		int[] array = new int[]{99, 55, 0, 89, 0, 8, 80, 19, 68, 61};

		for (int i = 0; i < array.length; i++)
			array[i] = rand.nextInt(100);

		for (int v : array)
			System.out.print(v + ",");

		System.out.println();

		sort(array, 0, array.length - 1);

		for (int v : array)
			System.out.print(v + ",");
	}

	static void sort(int[] array, int left, int right) {

		if (left<right){
			int mid = (left + right) / 2;
			int value = array[mid];
			
			int p_left = left;
			int p_right = right;
			while(p_left < p_right){
				while(p_left < p_right && array[p_left] < value)
					p_left++;
				while(p_right>= left && array[p_right] >= value)
					p_right--;
				
				if (p_left < p_right){
					int tmp = array[p_left];
					array[p_left] = array[p_right];
					array[p_right] = tmp;
					p_left++;
					p_right--;
				}
			}
			
			if(p_right< left){
				array[mid] = array[left];
				array[left] = value;
				sort(array,left+1,right);
			}else{
				if (p_left == p_right){
					if(array[p_left] >= value){
						sort(array,left,p_left-1);
						sort(array,p_left,right);
					}else{
						sort(array,left,p_left);
						sort(array,p_left+1,right);
					}
				}else{
					sort(array,left,p_right);
					sort(array,p_left,right);
				}
			}
		}
	
	}

}

  

posted on 2017-11-15 09:40  李雷  阅读(173)  评论(0)    收藏  举报

导航