冒泡排序
冒泡排序,双重for循环,所以时间复杂度是O (n*n)
内层循环每次做相邻两个数字的比较,每循环一次比较出两个数字的大小,
外层循环,没循环一次,将一个数上升到他的正确位置。
package sort; /** * @author: tianhaichao * @date: 2022/9/15 10:15 * @description: 冒泡排序 */ public class BubbleSort { public static void sortUp(int[] array) { int temp; // 从第一个数开始,每一次循环,排好一个数字的位置,把最大的数上升到最上面 for (int i = 0; i < array.length -1; i++) { BubbleSort.print(array); //从第一个数开始,每一次循环,将当前数字与他的后一位做比较,如果比后一位大,两者交换,否则不动。 for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } /** * @author: tianhaichao * @date: 2022/9/15 14:51 * @description:对于相对有序的数据,能节省很多效能 */ public static void sortUp2(int[] array) { int temp; boolean toExchange = true; for (int i = 0; i < array.length -1; i++) { BubbleSort.print(array); toExchange = true; for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; toExchange = false; } } if(toExchange){ break; } } } public static void main(String[] args) { int[] array = new int[]{1,2,3,6,10,9,5,4}; BubbleSort.sortUp(array); System.out.println("======================"); array = new int[]{1,2,4,6,11,9,5,10}; BubbleSort.sortUp2(array); } public static void print(int[] array){ for (int i = 0;i<array.length;i++){ System.out.print(" "); System.out.print(array[i]); System.out.print(" "); } System.out.println(); } }