java之氣泡排序、選擇排序、快速排序、插入排序、java8排序
阿新 • • 發佈:2018-11-06
package cn.com.javatest.sort; import org.apache.commons.lang3.StringUtils; /** * 常用排序方法 * * @author: Rodge * @time: 2018年10月4日 下午5:16:22 * @version: V1.0.0 */ public class SortTest { /** * 氣泡排序:比較相鄰的元素,如果第一個比第二個大,則交換位置。 * @param numbers */ public static void bubbleSort(int[] numbers) { int temp; //中間變數 int size = numbers.length; //陣列長度 for (int i = 0; i < size - 1; i++) { for (int j = i + 1; j < size; j++) { if (numbers[i] > numbers[j]) { temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } } } /** * 快速排序:從數列中挑出一個元素,稱為“基準”, * 重新排序所有元素比基準小的擺放在其前面,反之在後面。 * @param numbers * @param start * @param end */ public static void quickSort(int[] numbers, int start, int end) { if (start < end) { int base = numbers[start]; //第一個數作為基準 int temp; //中間變數 int i = start, j = end; do { while (numbers[i] < base && i < end) { i ++; } while (numbers[j] > base && j > start) { j --; } if (i <= j) { temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; i ++; j --; } } while (i <= j); if (start < j) { quickSort(numbers, start, j); } if (end > i) { quickSort(numbers, i, end); } } } /** * 選擇排序:在未排序序列中找到最小元素,存放在起始位置。 * @param numbers */ public static void selectSort(int[] numbers) { int size = numbers.length; int temp; for (int i = 0; i < size; i++) { int k = i; for (int j = size - 1; j > i; j--) { if (numbers[j] < numbers[k]) { k = j; } } temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } /** * 插入排序:從第一個元素開始,取出下一元素,如果元素大於下一元素,則交換位置。 * @param numbers */ public static void insertSort(int[] numbers) { int size = numbers.length; int temp; int j; for (int i = 0; i < size; i++) { temp = numbers[i]; for (j = i; j > 0 && temp < numbers[j-1]; j--) { numbers[j] = numbers[j-1]; } numbers[j] = temp; } } /** * Java8 Arrays.sort() * @param numbers */ public static void sort(int[] numbers) { Arrays.sort(numbers); } /** * Java8 Arrays.parallelSort() * @param numbers */ public static void parallelSort(int[] numbers) { Arrays.parallelSort(numbers); } public static void main(String[] args) { int numbers[] = {23,4,54,12,34,56,3,24,5,88,10,22,100,76}; // bubbleSort(numbers); // quickSort(numbers, 0, numbers.length-1); // selectSort(numbers); // insertSort(numbers); // String str = StringUtils.join(numbers, ' ', 0, numbers.length); // System.err.println(str); // sort(numbers); // System.err.println(Arrays.toString(numbers)); parallelSort(numbers); System.err.println(Arrays.toString(numbers)); } }