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,就是有序的数组了已经,直接返回就行了。

  • 相关阅读:
    爬虫时http错误提示
    json.dumps()和json.loads()
    scrapy框架原理学习
    利用tushare进行对兴业银行股价的爬取,并使用numpy进行分析
    随机生成60位同学成绩,并求他们的平均数,中位数,众数等
    numpy中random的使用
    matplotlib中subplot的使用
    使用matplotlib画饼图
    乔坟,乔坟!
    c#控件的动画显示效果
  • 原文地址:https://www.cnblogs.com/zzxisgod/p/13335570.html
Copyright © 2011-2022 走看看