import java.util.Arrays; public class OrderDemo { /** * 1.冒泡排序法 * 按照升序排序 * @param arr */ public static void bubbleSort(int[] arr) { //冒泡排序 每个元素跟后面的元素相比,交换位置 for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); } /** * 2.选择排序法 * 按照升序排序 * @param arr */ public static void selectSort(int[] arr) { //每次都是找最小的元素,进行置换 for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; int minValue = arr[i]; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < minValue) { minValue = arr[j]; minIndex = j; } } arr[minIndex] = arr[i]; arr[i] = minValue; } System.out.println(Arrays.toString(arr)); } /** *3. 插入排序法 * 按照升序排序 * @param arr */ public static void insertSort(int[] arr) { //第一次把arr[0] 看成有序数组 arr[1]插入 //第二次把arr[0]到arr[1] 看成有序数组 arr[2]插入 //第三次把arr[0]到arr[2] 看成有序数组 arr[3]插入 for (int i = 1; i < arr.length; i++) { int insertValue = arr[i];//当前要插入的值 int insertIndex = i - 1;//要插入位置 while (insertIndex >= 0 && arr[insertIndex] > insertValue) {//要插入位置的值是否大于当前要插入的值 arr[insertIndex + 1] = arr[insertIndex]; insertIndex--; } arr[insertIndex + 1] = insertValue; } System.out.println(Arrays.toString(arr)); } /** * 4.快速排序法 * 按照升序排序 * @param arr * @param left * @param right */ public static void method(int[] arr, int left, int right) { if (arr == null || left > right) return; int midValue = arr[left]; int i = left; int j = right; while (i != j) { while (arr[j] >= midValue && i < j) { j--; } while (arr[i] <= midValue && i < j) { i++; } //进行交换左右两个数据 int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } //最后把midValue放到i和j相等的那个下标的位置 arr[left] = arr[i]; arr[i] = midValue; method(arr, left, i - 1); method(arr, i + 1, right); } public static void main(String[] args) { OrderDemo orderDemo=new OrderDemo(); int [] arr=new int[]{3,2,9,8,10,5,12,11,20}; OrderDemo.bubbleSort(arr); OrderDemo.selectSort(arr); OrderDemo.insertSort(arr); OrderDemo.method(arr,1,5); System.out.println("method-->"+Arrays.toString(arr)); } }
几种简单的排序算法
最新推荐文章于 2023-04-06 13:03:52 发布