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


    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

    打印结果

  • 相关阅读:
    Django(60)Django内置User模型源码分析及自定义User
    Django(59)验证和授权
    Django(58)viewsets视图集详解
    Django(57)Generic类视图
    正则表达式
    JMeter之检查点(JSON断言)
    JMeter之检查点(响应断言)
    JMeter之参数化(一)
    JMeter之一个简单的性能测试
    JMeter基础
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13112156.html
Copyright © 2020-2023  润新知