zoukankan      html  css  js  c++  java
  • 简单谈谈 数组排序 的方法 【自定义算法 、 冒泡算法 等】

    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

    打印结果

  • 相关阅读:
    微软忘记修复Mac Office2004/2008安全漏洞 狼人:
    资深黑客谈:安全趋势正在向应用层发展 狼人:
    Web应用防火墙之前世今生 狼人:
    RSA技术总监Bill Duane:安全正因云而改变 狼人:
    微软11月将发布3个补丁 修复11处漏洞 狼人:
    选择透明在按钮上添加图片
    企业组织不管你学的是什么专业,你都应该多少懂些管理学的东西
    最大数组连续子向量的最大和
    异步请求再探异步 ASP.NET 页
    谷歌平台谷歌将推安卓游戏中心 整合社交挖角iOS
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13112156.html
Copyright © 2011-2022 走看看