【排序算法】冒泡排序

1  前言

 今天把排序的几个算法过一下,这节我们看一下冒泡排序,简单的来说就是相邻两个两两交换,我们看示例。

2  代码示例

/**
 * 冒泡排序
 * 相邻两个逐步交换,每轮选出一个最大的
 * 假设待排序的数量为:n
 * 考虑的两点:
 * 1、外层循环,那要进行 n-1 轮,即可排完 所以外层的循环是 1 -> n - 1
 * 2、内层循环,始终是从0开始,到 n-轮数-1 因为比较的时候比较的是 j、j+1已经把该轮最后一个包含了所以减1
 *    所以内层的循环时 0 -> n-轮数-1 由于外层循环刚好是1开始 所以就是 0 -> n - i
 * @param arr
 */
public static void bubbleSort(int[] arr) {
    // 轮数
    for (int i = 1; i < arr.length; i++) {
        // 内存相邻比较交换位置
        for (int j = 0; j < arr.length - i; j++) {
            // 升序,大的往后放
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
public static void main(String[] args) {
    int[] arr = IntStream.generate(() -> ThreadLocalRandom.current().nextInt(10000)).limit(10000).toArray();
    System.out.println("排序前:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
    bubbleSort(arr);
    System.out.println("排序后:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
}

3  小结

有写的不对的地方,欢迎指正哈。

posted @ 2023-03-14 16:17  酷酷-  阅读(15)  评论(0编辑  收藏  举报