Java——快速排序

如何通過可變數組ArrayList 以及分治法實現快速排序

代碼如下:

import java.util.ArrayList;
import java.util.Scanner;

//快速排序
//挖坑填數+分治
public class KuaiSuPaiXu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		int a[]= {16,32,14,53,38,56,8,65,49,45};
//		quickSort(a);
		
		Scanner get=new Scanner(System.in);
		ArrayList<Integer> al=new ArrayList<>();
		while(get.hasNext()) {
			int num=get.nextInt();
			if(num==-1) {
				break;
			}
			al.add(num);
		}
		int b[]=new int[al.size()];
		for(int i=0;i<al.size();i++) {
			b[i]=al.get(i);
		}
		quickSort(b);
		get.close();
	}
	
	public static void sort(int a[], int low, int high) {
		if(low>=high)
			return ;
		int i=low;
		int j=high;
		int key=a[i];
		while(i<j) {
			while(i<j && a[j]>=key)//從右往左找到第一個小於key的數
				j--;
			if(i<j)
				a[i++]=a[j];
			while(i<j && a[i]<=key)//從左往右找到第一個大於key的數
				i++;
			if(i<j)
				a[j--]=a[i];
		}
		a[i]=key;
		sort(a,low,i-1);
		sort(a,i+1,high);
	}
	
	public static void quickSort(int a[]) {
		// TODO Auto-generated method stub
		sort(a, 0, a.length-1);
		for (int i : a) {
			System.out.print(i+" ");
		}
	}
	
}

運行結果截圖:
在這裏插入圖片描述

發佈了81 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章