• 冒泡排序的基本实现


    基本流程:

    N个数字,进行a[0]和a[1]比较,如果前者比后者大,就交换位置;a[1]和a[2]比较,如果前者比后者大,就交换位置...直到最后一个数字,此时可以保证最后一个数字整组最大;

    剩余N-1个数字,进行a[0]和a[1]比较,如果前者比后者大,就交换位置;...,此时可以保证最后两个数字整组最大;

    ...

    经过N-1轮比较,剩余最后一个数字,不必比较。

     

    经过上述的梳理,可以看到,外层循环只需要进行N-1轮;而每一轮的比较,需要根据轮数确定数组下标的位置,应该是从a[0]与a[1]比较,一直比较到第a[N-2]和第a[N-1]个元素(因为最大就是a[N-1]);随着轮数的增加,这里的最大元素递减1个。

    对于大小不符合顺序的元素,我们需要进行交换操作。如果整个一轮都没有发生交换,那么可以判定,这一组数据已经符合顺序。可以退出比较。

     

    图示:

     代码如下,注意外层循环与内层循环index范围的处理:

    public class BubbleSort {
        public void bubbleSort(int[] array) {
            int temp;
            int count = 0;
            for (int i = 0; i < array.length - 1; i++) {
                boolean ordered = true;
                count++;
                for (int j = 0; j < array.length - 1 - i; j++) {
                    if (array[j] > array[j + 1]) {
                        ordered = false;
                        temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
                if (ordered) {
                    break;
                }
            }
            System.out.println("count = " + count);
        }
    }

  • 相关阅读:
    codeforce1214E Petya and Construction Set
    codeforces1214D Treasure Island
    CCPC2019网络赛1002 array (主席树)
    POJ2442
    计算机网络-应用层(3)Email应用
    计算机网络-应用层(2)FTP协议
    计算机网络-应用层(1)Web应用与HTTP协议
    算法-排序(1)k路平衡归并与败者树
    算法-搜索(6)B树
    RSA加密算法和SSH远程连接服务器
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15264709.html
Copyright © 2020-2023  润新知