zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序,顾名思义,就是像气泡一样往上冒。

    升序排序为例,从第一个数字开始,往向他后面的一个数字比较,如果前者大后者小,就交换,否则,不动,指针后移。依次类推

    先来第一趟排序

    用于示例的原始数据是:[5, 6, 1, 3, 4]

    for (int i = 0; i < arr.length - 1; i++) {
                if (arr[i] > arr[i + 1]){
                    temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i+1] = temp;
                }
            }
            System.out.println("第一趟排序后的结果:");
            System.out.println(Arrays.toString(arr));

    for (int j = 0; j < arr.length - 2; j++) {
                if(arr[j] > arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            System.out.println("第二趟排序的结果是");
            System.out.println(Arrays.toString(arr));

    依次类推,每次都能确定一个数,因为是升序,所以每次都能确定一个最大的数排到他该去的位置上,相对的,需要排序的元素个数也会减少

    寻找规律可以得到冒泡排序的总方法:

    public static int [] Bubblesort(int [] array){
            int item;
            for (int i = 1; i < array.length; i++) {
                for (int j = 0; j < array.length - i; j++) {
                    if (array[j] > array[j+1]) {
                        item = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = item;
                    }
                }
            }
        return array;
    }

    优化:

    那如果直接就给了一个有序的数组呢,咋办,还要一遍一遍的去比的话不是就浪费时间了吗?

    因此,提出冒泡排序的优化算法,其实很简单

    定义一个flag初始值设为false,放到算法的交换部分里面去,如果进行了交换,就把值设置为true,说明进行过了比较,那就看flag就行了,如果从前往后比较,一个数都没有交换,那么OK,就是有序的数组了已经,直接返回就行了。

  • 相关阅读:
    lvs+keepalived+nginx
    linux配置静态ip
    nginx+keepalived
    nginx反向代理+负载均衡
    win10 安装虚拟机问题
    zlib-1.2.8用VS2010编译生成动态静态库
    mysql 创建库时指定编码
    mysql 升级遇到的问题 (本次由5.1.1X到5.6.28)
    android的SDK包下载
    node-webkit 使用笔记
  • 原文地址:https://www.cnblogs.com/zzxisgod/p/13335570.html
Copyright © 2011-2022 走看看