• JAVA数组排序


    1、冒泡排序:

    相邻的两个数相比,如果排序不对时,就对调位置;排序对时,不动。

    第一轮比较后,有一个最大的数排到最后

    第二轮比较后,又有一个较大数排到倒数第二位。

    ......

    以此类推

    11,6,2,8,22,1,98


    七个数


    第一轮
    第1次6,11,2,8,22,1,98
    第2次6,2,11,8,22,1,98
    第3次6,2,8,11,22,1,98
    第4次6,2,8,11,22,1,98
    第5次6,2,8,11,1,22,98
    第6次6,2,8,11,1,22,98

    共6轮 即7-1
    第一轮6次,即7-1,第二轮5次,即7-2

    public class ArrayDemo4 {
    
        public static void main(String[] args) {
            int[] arr={11,6,2,8,22,1,98,7};
            printArr(arr);                //排序前
            System.out.println("");
            bubbleSort(arr);
            printArr(arr);                //排序后
        }
        
        static void bubbleSort(int[] array){            //排序函数
            
            for(int x=1;x<array.length-1;x++){            //假设有x个元素,一共要比较x-1轮
                for(int y=0;y<array.length-x;y++){        //第一次是y-1,第二次是y-2次,第三次是y-3次,第x轮是y-x次    
                    if(array[y]>array[y+1]){
                        int temp=array[y];
                        array[y]=array[y+1];
                        array[y+1]=temp;
                    }
                }
            }
        }
        public static void printArr(int[] arr){        //打印函数。
            for(int i=0;i<arr.length;i++)            
            {
                if(i!=arr.length-1)                //判断非最后一个元素的,输出数组元素,并加逗号。
                    System.out.print(arr[i]+",");
                else {                                //最后一个元素,只输出元素,无逗号
                    System.out.print(arr[i]);
                }
            }
        }
    }

    输出:

    11,6,2,8,22,1,98,7
    1,2,6,7,8,11,22,98

    2、选择排序

    第一轮,第1个数和后面的数相比,按大小排,结果是最小的数排最前
    第二轮,第2个数和后面的数相比,按大小排,结果是第二小的数排第二位
    ......
    以此类推

    一共n-1轮,因为最后一个数不用比

    11,6,2,8,22,1,98
    6轮

    第一轮 和第2个数开始比
    第二轮 和第3个数开始比

    ......

    以此类推

    public class ArrayDemo5 {
        public static void main(String[] args)
        {
            int[] arr={11,6,2,8,22,1,98};
            selectSort(arr);
            printArr(arr);
        }
        static void selectSort(int[] array){        //定义选择排序函数
            for(int x=0; x<array.length-1;x++)        //第一个数开始比,比较length-1轮
            {
                for(int y=x+1;y<array.length;y++)    //和第几个
                {
                    if(array[x]>array[y]){
                        int temp = array[x];
                        array[x]=array[y];
                        array[y]=temp;
                    }
                }
            }
        }
        public static void printArr(int[] arr){        //定义打印函数。
            for(int i=0;i<arr.length;i++)            
            {
                if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                    System.out.print(arr[i]+",");
                else {                                //最后一个元素,只输出元素,无逗号
                    System.out.print(arr[i]);
                }
            }
        }    
    }

    输出:

    1,2,6,8,11,22,98

    3、使用API中的排序功能

    import java.util.Arrays;                //java.util.Arrays;此类包含用来操作数组(比如排序和搜索)的各种方法
    
    public class ArrayDemo6 {
        public static void main(String[] args)
        {
            int[] arr={12,4,6,2,11,7,3,12,61};
            Arrays.sort(arr);                //Arrays.sort提供了排序方法
            printArr(arr);
            
            
            String[] arr1={"Z", "a", "D"};
            Arrays.sort(arr1);
            printArr(arr1);
        }
        public static void printArr(int[] arr){        //定义一个整数数组的函数。
            for(int i=0;i<arr.length;i++)            
            {
                if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                    System.out.print(arr[i]+",");
                else {                                //最后一个元素,只输出元素,无逗号
                    System.out.print(arr[i]);
                    System.out.println("");
                }
            }
        }
        public static void printArr(String[] arr){   //定义一个字符串数组的函数。
            for(int i=0;i<arr.length;i++)            
            {
                if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                    System.out.print(arr[i]+",");
                else {                               //最后一个元素,只输出元素,无逗号
                    System.out.print(arr[i]);
                    System.out.println("");
                }
            }
        }
    }

    输出:

    2,3,4,6,7,11,12,12,61
    D,Z,a

  • 相关阅读:
    HBase 异步查询导致的死锁和zookeeper通信中断问题追踪与总结[非技术]
    [读书笔记]代码整洁之道读书笔记
    HBase行锁与MVCC分析
    进程、线程、轻量级进程、协程和go中的Goroutine 那些事儿
    上周回顾 - 2012年11.26-12.4
    2012年一个屌丝程序员的学习总结:读书、户外、泡妞、习惯、母猪产后护理
    C#_WinForm接收命令行参数
    SQL常识
    集成.Net / Flex3 & FluorineFX — Part II: The Client
    DB2基本概念
  • 原文地址:https://www.cnblogs.com/ibelieve618/p/6400323.html
Copyright © 2020-2023  润新知