zoukankan      html  css  js  c++  java
  • 尚学堂 JAVA DAY11 概念总结

    1.冒泡排序算法 《升序排列》

    思路1:
    数组长度为n,那么要对数组进行n-1次遍历;

    step 1---从数组的第一个数开始,两两比较,如果第一个数 > 第二个数,将二者进行交换;
    之后拿第二个数与第三个数进行比较,若 第二个数 > 第三个数,将二者进行交换;
    依此类推,直到 第n-2个数 和 第n-1个数比较完。

    此时,该数组中最大的数将排在数组的最后一个位置。

    step 2---重复step1,直到遍历完整个数组。

     1 public class NewArray {
     2     public static void main(String[] args) {
     3         //声明并定义一个无序的数组
     4         int[] scores = new int[15];
     5         for(int i = 0; i < scores.length; i++) {
     6             scores[i] = (int)(Math.random() * 101);
     7         } 
     8 
     9         //排序前 打印数组
    10         System.out.println("
    ==============排序前====================");
    11         for(int score : scores) {
    12             System.out.print(score + " ");
    13         }
    14 
    15         //排序进行时 升序排列
    16         int temp = 0;
    17         int counter = 0;
    18         for(int j = 0; j < scores.length - 1; j++) {
    19             for(int i = 0; i < scores.length - 1; i++) {
    20                 if(scores[i] > scores[i+1]) {
    21                     temp = scores[i];
    22                     scores[i] = scores[i+1];
    23                     scores[i+1] = temp;
    24                 }
    25             }
    26                 counter++;
    27         }
    28 
    29         //排序后 打印数组
    30         System.out.println("
    ==============排序后====================");
    31         for(int score : scores) {
    32             System.out.print(score + " ");
    33         }
    34 
    35         System.out.println("
    ======================================");
    36         System.out.println("共进行了" + counter + "次比较");
    37     }
    38 }

    思路2:
    数组长度为n,那么要对数组进行n-1次遍历;

    step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。

    step 2---重复step1,直到数组遍历结束。

    public class NewArray {
        public static void main(String[] args) {
            //声明并定义一个无序的数组
            int[] scores = new int[15];
            for(int i = 0; i < scores.length; i++) {
                scores[i] = (int)(Math.random() * 101);
            } 
    
            //排序前 打印数组
            System.out.println("
    ==============排序前====================");
            for(int score : scores) {
                System.out.print(score + " ");
            }
    
            //排序进行时 升序排列
    
            int temp = 0;
            int counter = 0;
            for(int j = 0; j < scores.length - 1; j++) {
                for(int i = 0; i < scores.length - 1 - j; i++) {
                    if(scores[i] > scores[i+1]) {
                        temp = scores[i];
                        scores[i] = scores[i+1];
                        scores[i+1] = temp;
                    }
                }
                counter++;
            }
    
    
            //排序后 打印数组
            System.out.println("
    ==============排序后====================");
            for(int score : scores) {
                System.out.print(score + " ");
            }
    
            System.out.println("
    ======================================");
            System.out.println("共进行了" + counter + "次比较");
        }
    }
    View Code

    思路3:
    数组长度为n,那么要对数组进行n-1次遍历;

    step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。

    step 2---重复step1,直到数组中没有发生元素的交换为止。

     1 public class NewArray {
     2     public static void main(String[] args) {
     3         //声明并定义一个无序的数组
     4         int[] scores = new int[15];
     5         for(int i = 0; i < scores.length; i++) {
     6             scores[i] = (int)(Math.random() * 101);
     7         } 
     8 
     9         //排序前 打印数组
    10         System.out.println("
    ==============排序前====================");
    11         for(int score : scores) {
    12             System.out.print(score + " ");
    13         }
    14 
    15         //排序进行时 升序排列
    16         int temp = 0;
    17         int counter = 0;
    18         boolean hasChanged = false;
    19         for(int j = 0; j < scores.length - 1; j++) {
    20             //每一次遍历开始都认为数列无序,数据未发生过交换
    21             hasChanged = false;  
    22             for(int i = 0; i < scores.length - 1 - j; i++) {
    23                 if(scores[i] > scores[i+1]) {
    24                     //只要发生了交换,标志位置为true,表示还需进行下一次比较
    25                     hasChanged = true;
    26                     temp = scores[i];
    27                     scores[i] = scores[i+1];
    28                     scores[i+1] = temp;
    29                 }
    30             }
    31             counter++;
    32             if(!hasChanged){
    33                 break;
    34             }
    35         }
    36 
    37 
    38         //排序后 打印数组
    39         System.out.println("
    ==============排序后====================");
    40         for(int score : scores) {
    41             System.out.print(score + " ");
    42         }
    43 
    44         System.out.println("
    ======================================");
    45         System.out.println("共进行了" + counter + "次比较");
    46     }
    47 }
    48 
    49 2.方法的重载
    50     一个类中可以存在 [方法名相同、功能相同、参数不同(形参类型、形参数量)的 多个方法]。 这叫方法的重载。
    51     如:
    52         Arrays.sort(int[] arr);
    53         Arrays.sort(float[] arr);
    54         Arrays.sort(byte[] arr);
    55         Arrays.sort(double[] arr);
    56         ...
    57     顺便学习了Arrays类的使用,以及API文档的查阅
    58 import java.util.Arrays;
    59 
    60 public class TestArraysClass {
    61     public static void main(String[] args) {
    62         //声明并定义一个无序的数组
    63         int[] scores = new int[15];
    64         for(int i = 0; i < scores.length; i++) {
    65             scores[i] = (int)(Math.random() * 101);
    66         } 
    67 
    68         //输出数组
    69         System.out.println(Arrays.toString(scores));
    70 
    71         //将数组排序
    72         Arrays.sort(scores);
    73         
    74         //输出数组
    75         System.out.println(Arrays.toString(scores));
    76 
    77         //查询某个元素
    78         System.out.println(Arrays.binarySearch(scores,4));
    79 
    80         //复制一个数组
    81         int[] newScores = Arrays.copyOf(scores,0);
    82 
    83         //打印新数组
    84         System.out.println(Arrays.toString(newScores));
    85     
    86     }
    87 }

    3.可变参数
    1)格式:
    方法头(类型 ... 参数变量名) {
    方法实体
    }
    2)特点:(要背)
    a.只能作为方法的形参;
    b.JDK1.5之后提供;
    c.可接受八种基本数据类型和数组类型数据;
    d.可以接受0个、1个和多个实参;
    e.可变参数只能是最后一个参数;
    f.定义了可变参数的方法后,不可定义数组为形参的方法;
    g.重载的方法包括可变参数 和 确定数量参数的方法时,会优先调用确定数量参数的方法,而
    忽略可变参数的方法。

    4.main方法如何接收实参?
    格式:
    java 类名 参数1 参数2 参数3...

    5.二维数组
    1) 声明格式:
    类型[][] 数组名; 或
    类型 数组名[][];
    2) 分配空间:
    new 类型[长度][长度]; ---将二维数组的第一维和第二维都分配空间,使这都有默认值。

    new 类型[长度][];---仅给二维数组的第一维分配空间,其默认值为null;
    3) 动态初始化
    数组名[][] = ...;
    4) 静态初始化
    是将上述三步合而为一。
    类型[][] 数组名 = new 类型[][]{{},{},{}...};

    类型[][] 数组名 = {{},{},{}...};

     1 public class TwoDArray{
     2 
     3     public static void main(String[] args) {
     4         
     5         //int[][] scores = new int[][]{{80,90,78},{90,80},{0,70}};
     6         int[][] scores = {{80,90,78},{90,80},{0,70}};
     7 
     8         /*scores[0] = new int[4];
     9         scores[1] = new int[3];
    10         scores[2] = new int[2];
    11 
    12         scores[0][0] = 80;
    13         scores[0][1] = 79;
    14         scores[0][2] = 78;
    15 
    16         scores[1][0] = 90;
    17         scores[1][1] = 80;
    18 
    19         scores[2][1] = 70;    */
    20 
    21         for(int i = 0; i < scores.length; i++) {
    22             for(int j = 0; j < scores[i].length; j++) {
    23                 System.out.print(scores[i][j] + " ");
    24             }
    25             System.out.println();
    26         }
    27 
    28     }
    29 
    30 }
  • 相关阅读:
    用Python打造一款文件搜索工具,所有功能自己定义!
    Python+Excel+Word一秒制作百份合同
    只需6行代码,Python将PPT转为Word!
    老板让我从几百个Excel中查找数据,我用Python一分钟搞定!
    爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别
    SoftEther服务端配置
    SoftEther服务端安装
    nginx学习
    zookeeper安装
    prometheus监控之自动发现
  • 原文地址:https://www.cnblogs.com/nora-xie/p/5671590.html
Copyright © 2011-2022 走看看