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

    打印结果

  • 相关阅读:
    Sliverlight之 矢量绘图
    Silverlight之 xaml布局
    七天学会ASP.NET MVC(七)——创建单页应用
    MVC视图之间调用方法总结
    C#取得程序的根目录以及判断文件是否存在
    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
    [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
    C#中StreamReader读取中文文本出现乱码的解决方法
    七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13112156.html
Copyright © 2011-2022 走看看