【8中排序算法一覽】java
【算法1:冒泡排序】算法
【冒泡算法實例】
數組
package com.sort.demo1; import java.util.Arrays; /** * 冒泡排序 */ public class BubbleSort { public static void main(String[] args) { int[] arr = new int[]{1,4,5,7,3,9,8,0,2,6}; System.out.println(Arrays.toString(arr)); bubbleSort(arr); System.out.println(Arrays.toString(arr)); } /** * 冒泡排序算法 * 第一個for循環:控制共比較多少輪 * 第二個for循環:控制每次循環中比較的次數 * @param arr */ public static void bubbleSort(int[] arr){ for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int temp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } }
【快速排序算法】ui
【實例】spa
package com.sort.demo1; import java.util.Arrays; /** * 快速排序 */ public class QuickSort { public static void main(String[] args) { int[] arr = new int[]{1,4,5,7,3,9,8,0,2,6}; System.out.println(Arrays.toString(arr)); quickSort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); } /** * 快速排序算法 * @param arr * @param start * @param end */ public static void quickSort(int[] arr,int start,int end){ if(start<end){ //把數組中的第start個數字做爲標準數 int stard = arr[start]; //記錄須要排序的下標 int low = start; int high = end; //循環找到比標準數大的數 和 比標準數小的數 while (low<high){ //若是右邊的數字比標準數大,右邊的下標-1 while (low<high && stard<=arr[high]){ high--; } //使用右邊的數字替換左邊的數字 arr[low] = arr[high]; //若是左邊的數字比標準數小,左邊的下標+1 while (low<high && stard>arr[low]){ low++; } arr[high] = arr[low]; } //把標準數賦值給low低所在的位置的元素(這個時候low=high) arr[low] = stard; //處理全部的小的數字 quickSort(arr,start,low); //處理全部的大的數字 quickSort(arr,low+1,end); } } }