4.1_8种常用排序算法1(交换排序:冒泡排序+快速排序)
【8中排序算法一览】
【算法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; } } } } }
【快速排序算法】
【实例】
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); } } }