zoukankan      html  css  js  c++  java
  • 三、数组

    1、声明: 数组元素类型 数组名[]    int arr[];

         数组元素类型[] 数组名    String[] arg;

    2、分配内存空间:数组名称 = new 数组元素类型[数组元素的个数];  arr = new int[5];

    3、初始化:int arr[] = new int[]{1,2,3,4,5};

           int arr2[] = {1,2,3,4,5};

    4、数组的基本操作

    (1)遍历数组:for循环、foreach语句

    (2)替换数组元素:Arrays类的静态方法fill()

    (3)排序:Arrays类的静态方法sort()

    (4)复制:Arrays类的方法copyOf()、copyOfRange()

    5.插入排序法:将要排序的值逐个插入到其所适合的位置,其后的元素都向后移一个位置。

     1 public class Test1 {
     2     public static void main(String[] args) {
     3         /*
     4          * 1. 产生一个乱序数组赋给 a
     5          * 2. 显示 a 数组
     6          * 3. 对 a 数组排序
     7          * 4. 显示 a 数组
     8          */
     9         int[] a = random();
    10         System.out.println(Arrays.toString(a));
    11         System.out.println("---------------------");
    12         sort(a);
    13         System.out.println("---------------------");
    14         System.out.println(Arrays.toString(a));
    15         
    16     }
    17 
    18     private static int[] random() {
    19         /*
    20          * 1. 随机产生一个数组长度赋给 len
    21          *        长度范围 [5, 11)
    22          * 2. 新建 len 长度的数组赋给 a
    23          * 3. 循环 i 从 0 到 <len 递增    
    24          *         4. 在a数组的i位置,
    25          *             放入一个100内的随机值
    26          * 5. 返回数组 a
    27          */
    28         
    29         int len = 
    30          5 + new Random().nextInt(6);
    31         int[] a = new int[len];
    32         for(int i=0;i<len;i++) {
    33             a[i] = new Random().nextInt(100);
    34         }
    35         return a;
    36     }
    37 
    38     private static void sort(int[] a) {
    39         /*
    40          * 1. 循环 i 从 1 到 <a.length 递增
    41          *         2. 循环 j 从 i-1 到 >=0 递减
    42          *             3. 如果 a[j+1] < a[j]
    43          *                 交换两个位置的值
    44          *             4. 否则,break
    45          *         5. 打印数组 a
    46          */
    47         
    48         // 第一个值,认为是有序数字序列
    49         for(int i=1;i<a.length;i++) {
    50             // j循环,将i位置的值,向前插入
    51             for(int j=i-1;j>=0;j--) {
    52                 if(a[j+1] < a[j]) {
    53                     int t = a[j+1];
    54                     a[j+1] = a[j];
    55                     a[j] = t;
    56                 } else {
    57                     break;
    58                 }
    59             }
    60             System.out.println(Arrays.toString(a));
    61         }
    62     }
    63 }

       冒泡排序法:对比相邻的元素值,满足条件则交换,把较小的元素移动到数组的前面,较大的移动到数组的后面。

     1 public class Test1 {
     2     public static void main(String[] args) {
     3         /*
     4          * 1. 产生一个乱序数组赋给 a
     5          * 2. 显示 a 数组
     6          * 3. 对 a 数组排序
     7          * 4. 显示 a 数组
     8          */
     9         int[] a = random();
    10         System.out.println(Arrays.toString(a));
    11         System.out.println("---------------------");
    12         sort(a);
    13         System.out.println("---------------------");
    14         System.out.println(Arrays.toString(a));
    15         
    16     }
    17 
    18     private static int[] random() {
    19         /*
    20          * 1. 随机产生一个数组长度赋给 len
    21          *        长度范围 [5, 11)
    22          * 2. 新建 len 长度的数组赋给 a
    23          * 3. 循环 i 从 0 到 <len 递增    
    24          *         4. 在a数组的i位置,
    25          *             放入一个100内的随机值
    26          * 5. 返回数组 a
    27          */
    28         
    29         int len = 
    30          5 + new Random().nextInt(6);
    31         int[] a = new int[len];
    32         for(int i=0;i<len;i++) {
    33             a[i] = new Random().nextInt(100);
    34         }
    35         return a;
    36     }
    37 
    38     private static void sort(int[] a) {
    39         /*
    40          * 1. 循环 i 从 0 到 <a.length 递增
    41          *         2. 循环 j 从 a.length-1 到 >i 递减
    42          *             3. 如果 a[j] < a[j-1]
    43          *                 4. 两个位置的值交换
    44          *         5. 打印数组 a
    45          *             
    46          */
    47         
    48         for(int i=0;i<a.length;i++) {
    49             // j循环,将最小值推到 i 位置
    50             boolean flag = false;//还没有交换
    51             for(int j=a.length-1;j>i;j--) {
    52                 if(a[j] < a[j-1]) {
    53                     int t = a[j];
    54                     a[j] = a[j-1];
    55                     a[j-1] = t;
    56                     flag = true;//如果交换,flag置成true
    57                 }
    58             }
    59             if(! flag) {
    60                 // flag的值还是 false,没有交换
    61                 // 排序完成
    62                 break;
    63             }
    64             
    65             System.out.println(Arrays.toString(a));
    66         }
    67     }
    68 }
  • 相关阅读:
    邮票面值设计(codevs 1047) 题解
    练习 : 生成器和模块
    练习 : 数据类型之字符串
    练习 : 函数基础
    练习 : 高阶函数
    练习 : 数据类型之列表
    练习 : 数据类型之元组
    练习 : 数据类型之字典
    练习 : 分支结构和循环结构
    练习 : 变量和运算符
  • 原文地址:https://www.cnblogs.com/yl-saber/p/5993604.html
Copyright © 2011-2022 走看看