• 了解冒泡排序


    1

    package com.mypackage.array;
    
    import java.util.Arrays;
    
    public class Demo07 {
        public static void main(String[] args) {
            int[] a = {3,2,6,7,4,5,6,34,56,7};
    
            int[] sort1 = sort1(a);    //调用我们自己写的排序方法后,返回一个排序后的数组
    
            System.out.println(Arrays.toString(sort1));     //降序,会输出[56, 34, 7, 7, 6, 6, 5, 4, 3, 2]
    
            int[] sort2 = sort2(a);    //调用我们自己写的排序方法后,返回一个排序后的数组
    
            System.out.println(Arrays.toString(sort2));     //降序,会输出[2, 3, 4, 5, 6, 6, 7, 7, 34, 56]
    
        }
    
        //冒泡排序
        //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换两个数的位置
        //2.每一次比较,都会产生一个最大或者最小的数字
        //3.下轮就会少一次排序
        //4.一次循环,直到结束
    
        public static int[] sort1 (int[] array){
            int temp = 0;     //临时变量
    
            //外层循环,判断我们要走几次
            for (int i = 0; i < array.length-1; i++) {
                //内层循环,比较两个数,如果第一个数比第二个数大则交换位置
                for (int j = 0; j < array.length-1-i; j++) {
                    if (array[j+1] > array[j]) {
                        temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;
                    }
                }
            }
    
            return array;
        }
    
        public static int[] sort2 (int[] array){
            int temp = 0;     //临时变量
    
            //外层循环,判断我们要走几次
            for (int i = 0; i < array.length-1; i++) {
                //内层循环,比较两个数,如果第一个数比第二个数大则交换位置
                for (int j = 0; j < array.length-1-i; j++) {
                    if (array[j+1] < array[j]) {
                        temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;
                    }
                }
            }
    
            return array;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    优化程序,减少不必要的循环次数:

    public static int[] sort3 (int[] array){
        int temp = 0;     //临时变量
    
        //外层循环,判断我们要走几次
        for (int i = 0; i < array.length-1; i++) {
            boolean flag = false;  
            //内层循环,比较两个数,如果第一个数比第二个数大则交换位置
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j+1] < array[j]) {
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag = true;
                }
            }
            if (flag == false){
                break;
            }
            /*若flag没有变成true,说明没有经历if结构,
            即在一次循环中,各个数都是按顺序排列的,
            也就没有必要再进行下面的循环
            所以break跳出循环*/
        }
    
        return array;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    交换机与路由技术-16-生成树协议STP
    将算力普惠到底 阿里云开启金秋上云季:数百款爆品享专属特惠价阿里云上新金秋云创季:上百款云产品享特惠 全能爆品仅99元/年
    成为比开发更硬气的测试人,我都经历了什么?
    vue3.2 table遍历form表单数据校验
    14.Java实现UDP通信
    《信息技术时代》期刊简介及投稿要求
    多网卡场景数据包接收时ip匹配规则
    Spring Boot对接RocketMQ示例
    细说react源码中的合成事件
    Kubernetes之list-watch机制
  • 原文地址:https://blog.csdn.net/hxh_230810/article/details/132792365