• 简单谈谈 数组排序 的方法 【自定义算法 、 冒泡算法 等】


    1.前言

    有个数组

    int[] numbers = new int[]{1, 6, 4, 5, 2, 12, 33, 24};

    希望能够计算出 升序和降序 的数组结果 ,该怎么做?

    2.算法

    (1)自定义排序算法

    package com.example.javabaisc.sort;
    
    import org.junit.jupiter.api.Test;
    
    import java.util.Arrays;
    
    
    public class Bubble {
    
        @Test
        public void t() {
          
            int[] numbers = new int[]{1, 6, 4, 5, 2, 12, 33, 24};
            /**
             * 升序
             */
            Arrays.sort(numbers);
            System.out.println(Arrays.toString(numbers));
            /**
             * 降序
             */
            //克隆,这样就不需要考虑数组长度了
            int[] n2 = numbers.clone();
            //首末数据颠倒
            for (int i = 0; i < numbers.length; i++) {
                n2[i] = numbers[numbers.length - 1 - i];
            }
            System.out.println(Arrays.toString(n2));
    
        }
    
    
    }
    View Code

    打印结果

     (2)冒泡排序算法

    package com.example.javabaisc.sort;
    
    import org.junit.jupiter.api.Test;
    
    import java.util.Arrays;
    
    
    public class Bubble {
    
        @Test
        public void t() {
    
            int[] numbers = new int[]{1, 6, 4, 5, 2, 12, 33, 24};
    
    //        冒泡排序算法
            int i, j;
            /**
             * 升序
             */
            //第一层,只需要对比(元素总数-1)次即可
            for (i = 0; i < numbers.length - 1; i++) {
                //第二层,只需要对比(元素总数-1-已经对比过的次数)次即可
                for (j = 0; j < numbers.length - 1 - i; j++) {
                    //升序:相邻的两个元素对比,当左边的比右边大时 ,需要互换位置
                    if (numbers[j] > numbers[j + 1]) {
                        //使用临时变量辅助 两个元素互换位置
                        int temp = numbers[j];
                        numbers[j] = numbers[j + 1];
                        numbers[j + 1] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(numbers));
            /**
             * 降序
             */
            //第一层,只需要对比(元素总数-1)次即可
            for (i = 0; i < numbers.length - 1; i++) {
                //第二层,只需要对比(元素总数-1-已经对比过的次数)次即可
                for (j = 0; j < numbers.length - 1 - i; j++) {
                    //降序:相邻的两个元素对比,当左边的比右边小时 ,需要互换位置
                    if (numbers[j] < numbers[j + 1]) {
                        //使用临时变量辅助 两个元素互换位置
                        int temp = numbers[j];
                        numbers[j] = numbers[j + 1];
                        numbers[j + 1] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(numbers));
    
        }
    
    }
    View Code

    打印结果

  • 相关阅读:
    JQuery 绑定单击事件到某个函数的的方法
    一刻校园足球管理平台亮相安徽打造智慧足球解决方案
    jQuery 获取不到 kindeditor 内容 的解决方法
    【视频】 ASP.NET MVC5&微信公众平台整合开发实战
    Set authorization for a whole area
    生成Area URL链接
    在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth
    IOS 监听通讯录是否改变
    ios 读取通讯录数据
    iOS中assign、copy 、retain等关键字的含义
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13112156.html
Copyright © 2020-2023  润新知