一個簡單的拿集合實現的快速排序(分治式遞迴)
阿新 • • 發佈:2018-12-20
時間 :2018年11月8號
作者:我想做個體麵人
快速排序
package cn.itlaobing.date1108; import java.util.ArrayList; import java.util.List; public class Fish { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); //呼叫集合的add方法往集合中新增元素 lists.add(5); lists.add(10); lists.add(9); lists.add(7); //呼叫sort方法對集合進行排序 sort(lists); //迭代lists集合輸出排序之後的元素 for(Integer i:lists) { System.out.print(i+"\t"); } } /** *建立一個公有的靜態的無返回值的sort() 方法 *以便於在main函式中呼叫 **/ public static void sort(List<Integer> lists) { if(lists.size()>1) { //定義三個儲存中間變數,最小值,最大值 List<Integer> smaller = new ArrayList<>(); List<Integer> same = new ArrayList<>(); List<Integer> lagger = new ArrayList<>(); Integer choseItem = lists.get(lists.size()/2); //通過foeach語句來迭代lists集合 for(Integer i:lists) { //比較中間變數與迭代到的元素大小,分別將其新增到不同的集合中 if(choseItem>i) { smaller.add(i); }else if (choseItem<i) { lagger.add(i); }else { same.add(i); } } //採用遞迴的方式對元素進行排序 sort(smaller); sort(lagger); //排序所有元素之後,將lists集合清空 lists.clear(); //將排序之後的元素新增到lists集合之中 lists.addAll(smaller); lists.addAll(same); lists.addAll(lagger); } } }