【算法系列】——Java實現冒泡&&快速
阿新 • • 發佈:2019-02-03
/** * @Title: quickSort.java * @Package cn.xiaojia.test * @Description: * @author 賈文靜 * @date 2017年8月8日 下午5:24:54 * @version V1.0 * Update Logs: * **************************************************** * Name: * Date: * Description: ****************************************************** */ package cn.xiaojia.test; import java.util.Arrays; public class quickSort { private static int num = 0; public static void main(String[] args) { int[] a = { 51, 46, 20, 18, 65, 97, 82, 30, 77, 50 }; System.out.println("陣列的初識資料:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); quick(a,0,a.length-1); System.out.println("陣列最終排序結果:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } } public static void quick(int[] list,int low,int high){ if (list.length>0 && low<high) { int middle = getMiddle(list, low, high); quick(list, low, middle-1); quick(list, middle+1, high); } } /** * @Title: getMiddle * @Description: 選取中間值 * @author 賈文靜 * @param list 陣列 * @param low 最小座標 * @param high 最高位座標 * @return * @throws * @date:2017年8月11日.下午7:44:44 */ public static int getMiddle(int[] list,int low,int high){ // 計算執行次數 num++; //選擇第一個數作為軸值,存放於臨時變數中 int temp = list[low]; //保證一致正序選擇 while (low<high) { //保證正序的前提下(從左到右),如果右側大於軸值,則判斷右側資料的下一個 while (low<high && list[high]>temp) { high--; } //在右側找到小於temp軸值的數,則進行交換 list[low]=list[high]; //保證正序的前提下(從左到右),如果左側小於軸值,則判斷左側資料的下一個 while (low<high && list[low]<=temp) { low++; } //在左側找到大於temp軸值的數,則進行交換 list[high]=list[low]; } list[low]=temp; System.out.println("執行了第"+num+"次"); for (int i = 0; i < list.length; i++) { System.out.print(list[i]+" "); } System.out.println(); return low; } }