• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IT笨鸟
博客园    首页    新随笔    联系   管理    订阅  订阅

java语言实现快速排序的两种方式

方法一:

public class QuickSortExp1{
	public static void main(String[] args){
		int[] sortArray = new int[]{5,7,4,2,9,8,3,6};
		System.out.println("before sorting ,the numbers are:");
		show(sortArray);
		quickSort(sortArray,0,sortArray.length-1);
		System.out.println("after sorting,the numbers are:");
		show(sortArray);
	}
	public static void quickSort(int[] intArray,int left,int right){
		if(left<right){
			int partValue =  intArray[left];
			int low = left;
			int high = right;
			while(low < high){
				while(low <high && intArray[high]>partValue){
					high--;
				}
				intArray[low] = intArray[high];
				while(low <high && intArray[low] <partValue){
					low++;
				}
				intArray[high] = intArray[low];
			}
			intArray[low] = partValue;
			quickSort(intArray,left,low-1);
			quickSort(intArray,low+1,right);
		}
	}
	public static void show(int[] intArray){
		for(int i=0;i<intArray.length;i++){
			System.out.print(intArray[i]+"\t");
		}
		System.out.println();
	}
}

  

方法二:

import java.util.*;
public class QuickSortExp2{
	public static void main(String[] args){
		List<Integer> sortList = new ArrayList<Integer>();
		sortList.add(5);
		sortList.add(7);
		sortList.add(4);
		sortList.add(2);
		sortList.add(9);
		sortList.add(8);
		sortList.add(3);
		sortList.add(6);		
		System.out.println("before sorting ,the numbers are:");
		show(sortList);
		quickSort(sortList);
		System.out.println("after sorting,the numbers are:");
		show(sortList);
	}
	public static void quickSort(List<Integer> sortList){		
		if(sortList.size() <= 1){
			return;
		} else if(sortList.size() == 2){
			if(sortList.get(0)>sortList.get(1)){
				int temp = sortList.get(0);
				sortList.set(0,sortList.get(1));
				sortList.set(1,temp);
			}
		} else{		
			List<Integer> leftList = new ArrayList<Integer>();
			List<Integer> rightList = new ArrayList<Integer>();
			int partValue = sortList.get(0);		
			for(int i=1;i<sortList.size();i++){
				if(sortList.get(i)< partValue){
					leftList.add(sortList.get(i));
				} else{
					rightList.add(sortList.get(i));
				}
			}	
			quickSort(leftList);
			quickSort(rightList);
			
			sortList.clear();
			sortList.addAll(leftList);
			sortList.add(partValue);
			sortList.addAll(rightList);
			leftList.clear();
			rightList.clear();			
		}			
	}
	public static void show(List<Integer> sortList){
		for(Integer i:sortList){
			System.out.print(i+"\t");
		}
		System.out.println();
	}
}

  

 

posted on 2014-05-09 20:51  IT笨鸟  阅读(404)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3