和上面的简化版的桶排序相比,冒泡排序好在哪里? 最明显的一点,桶排序浪费空间,如果最大数是10000 那么数组的长度就需要10000,如果排序的数据比较少的情况下,是很浪费空间的,而且如果排序的不是整数,上述方法则不能满足;
冒泡排序的基本思想:比较两个相邻的元素,如果顺序错误,则交换
循环一趟之后,最小的数在最右边
再循环一趟到倒数第二位即可(最后一位是最小的数),并且能保证倒数第二位是第二小的数
.....
package com.lxh.sort; /** * @Description: 冒泡排序 * 冒泡排序的时间复杂度是O(N*N) * 双重嵌套导致时间复杂度较高 * @Author angela.li * @Date 2017/12/01 */ public class BubbleSort { public static void main(String[] args) { int[] sortArr = {1, 5, 9, 3, 2, 4, 5, 10, 0};//降序排序 int temp; for (int i = 0; i < sortArr.length - 1; i++) {//9个数排序,只需要循环8次 for (int j = 0; j < sortArr.length - 1 - i; j++) {//- i的原因是 每一趟都会在循环的最后一位确定一个最小的数 if (sortArr[j] < sortArr[j + 1]) { temp = sortArr[j + 1]; sortArr[j + 1] = sortArr[j]; sortArr[j] = temp; } } } for (int i : sortArr) { System.out.print(" " + i); } } }