<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一維數(shù)組

      一、基本概念  

        數(shù)組是編程語言中最常見的一種數(shù)據(jù)結(jié)構(gòu),可以用它來存儲一個元素個數(shù)固定且元素類型相同的有序集,每個數(shù)組元素存放一個數(shù)據(jù),通常可通過數(shù)組元素的索引來訪問數(shù)組元素,包括為數(shù)組元素賦值和取出數(shù)組元素的值。

        特點:個數(shù)固定,參數(shù)數(shù)據(jù)類型相同,有序集

        數(shù)組也是一種數(shù)據(jù)類型,它本身是一種引用數(shù)據(jù)類型。像int、double、char等等這些屬于基本數(shù)據(jù)類型,但int[ ] 就是一種引用數(shù)據(jù)類型了;除了數(shù)組,類、接口也是引用數(shù)據(jù)類型。

      二、聲明及使用

      1)聲明創(chuàng)建

        先聲明
          dataType[ ] arrayName;

          數(shù)據(jù)類型[ ]  數(shù)組引用變量;
        再創(chuàng)建
          arrayName = new dataType[arraySize];

        可以用一條語句完成:
          dataType[] arrayName = new dataType[arraySize];

      2)訪問數(shù)組元素

        數(shù)組里面每個元素都可以通過下面語法表示,下標(索引)是從0開始的,所以它的范圍是0~arrayName.length-1。

          arrayName[index];

          (數(shù)組引用變量[下標];)

      三、初始化

        注意:數(shù)組使用前必須初始化。

      1)動態(tài)初始化

        特點:只告知數(shù)組需要幾個存儲空間,但是并未決定要存哪些值,由系統(tǒng)為每個元素指定初始值。

        arrayName = new type[length];

      2)靜態(tài)初始化

        特點:初始化數(shù)組和給數(shù)組賦值同時完成,在開辟數(shù)組的空間時依據(jù)已給定的元素個數(shù)來開辟相應的空間數(shù)。 

        /*語法結(jié)構(gòu)*/
        //第一種:   elementType[] arrayName = new elementType[]{value0,value1,value2,...,valuek};   //第二種:更簡捷   elementType[] arrayName={value0,value1,value2,...,valuek};
        //(元素類型[] 數(shù)組引用變量={值1,值2,...,值k};
      /*示例*/
      public class ArrayDemo { public static void main(String[] args) { //一條語句聲明創(chuàng)建 float[] scores = new float[100]; System.out.println(scores[1]); scores[2] =86; //索引從0開始 System.out.println(scores[2]); //System.out.println(scores[100]); //java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常 //先聲明,再創(chuàng)建 // String[] name; // name = new String[100]; // //數(shù)組使用前需要進行初始化 String[] name = new String[12]; //動態(tài)初始化:只需要告知存儲空間,不用賦值 String[] sing = new String[] {"aq","12sw","qswde"}; //靜態(tài)初始化:聲明之后要賦值 System.out.println(name[5]); System.out.println(sing.length); } }

      四、數(shù)組遍歷

        數(shù)組的元素類型和數(shù)組的大小都是確定的,所以當處理數(shù)組元素的時候,通常使用基本循環(huán)或者foreach循環(huán)

        數(shù)組大小:arrayName.length

        如:for ( int i = 0 ; i < candyArray.length ; i ++){

            System.out.print(candyArray[i]);

          }

      /*
       * 示例:輸出數(shù)組及求和
       * 1、打印數(shù)組
       * 2、求所有元素之和
       * @author longhj
       */
      package edu.study.array.practice_1031;
      
      import java.util.Arrays;
      
      public class PrintAndSumArray {
          //主方法
          public static void main(String[] args) {
              int[] number = {8,4,2,1,23,344,12};
              System.out.println("打印數(shù)組:");
              printArray(number);
              System.out.printf("數(shù)組所有元素之和為:sum = %d ",sum(number));
          }
          
          /**
           * 打印數(shù)組(三種方式)即遍歷數(shù)組
           * @param list int型數(shù)組list
           */
          public static void printArray(int[] list) {
              //方式一:利用for循環(huán)
              System.out.print("[");
              for(int i = 0 ;i < list.length;i++) {
                  System.out.print(list[i]+(i == list.length - 1 ? "]\r\n" : ", "));
              }
              
              //利用System.array類
              System.out.println(Arrays.toString(list));
              
              //foreach循環(huán)輸出
              for(int a:list)
                  System.out.print(a + "  ");
              System.out.println();
          }
          
          /**
           * 求所有數(shù)組元素的和
           * @param list 數(shù)組
           * @return sum 累加和
           */
          public static int sum(int[] list) {
              int sum = 0;
              for(int i = 0 ;i < list.length ; i++) {
                  sum +=list[i];
              }
              return sum;
          }  
      }

        foreach循環(huán):比for循環(huán)簡便,不使用下標變量就可以順序的遍歷整個數(shù)組

      //語法結(jié)構(gòu)

        for(elementType element : arrayName){

          //Process the element

        }

      //如:

      for(double e : list){
          System.out.println(e);//解釋:對list中每個元素e進行以下操作。注意,變量e必須聲明為與list中元素相同的數(shù)據(jù)類型。
      }

      五、對數(shù)組的操作

      1)數(shù)組的處理 

      通過一些例子來更好的理解

      //import java.util.Arrays;
      import java.util.Scanner;
      
      public class ArrayTest {
          //主函數(shù)
          public static void main(String[] args) {
              int[] number = {12,23,45,67};//初始化數(shù)組
              inputInitArray();
              randomInitArray();
              
              //調(diào)用找出最大值方法
              System.out.println(getMax(number));
              
              //調(diào)用生肖方法
              System.out.println(zodiac(2023));
              
          }
          
          /**
           * 1)使用輸入值初始化數(shù)組:循環(huán)使用用戶輸入的數(shù)值初始化數(shù)組。
           */
          public static void inputInitArray() {
          //聲明創(chuàng)建了大小為10的double型數(shù)組
              double[] list = new double[5];
              Scanner input = new Scanner(System.in);
              System.out.println("請輸入" + list.length + "個值:");
              for(int i = 0; i < list.length; i++)
                  list[i] = input.nextDouble();
              input.close();
              printArray(list);
          }
      
          /**
          * 2)打印數(shù)組中的每個元素
          * @param arr double型數(shù)組
          */
          public static void printArray(double[] arr) {
              //第一種方式:使用for循環(huán)
              System.out.print("[");
              for(int i = 0; i < arr.length; i++)
              System.out.print(arr[i] + (i == arr.length - 1 ? "]\r\n" : ", "));
              //第二種形式:使用Arrays工具類完成打印       //System.out.println(Arrays.toString(arr));
          }
          /**
           * 3)使用隨機數(shù)初始化數(shù)組
           */
          public static void randomInitArray() {
              double[] list = new double[5];
              for(int i = 0; i < list.length; i++) {
                  list[i] = Math.random() * 100;
              }
              printArray(list);
          }/**
           * 4)找出最大值
           * @param list 
           * @return
           */
          public static int getMax(int[] list) {
              int number = list[0];
              for(int i = 1 ; i < list.length ; i++) {
                  if(number < list[i])
                      number = list[i];
              }
              System.out.println("最大值為:");
              return number;
          }
          /**
           * 5)返回數(shù)組中最大元素第一次出現(xiàn)的索引下標
           * @param list
           * @return index 索引下標
           */
          public static int getIndextMax(int[] list) {
              int max = list[0];
              int index = 0;
              for(int i = 1 ; i < list.length ; i++) {
                  if(max < list[i]) {
                      max = list[i];
                       index = i;
                  }
              }
              return index;
          }
          /**
           * 6)打印生肖
           * @param year
           * @return
           */
          public static String zodiac(int year) {
              String[] years = {"猴","雞","狗","豬","鼠","牛","虎","兔","龍","蛇","馬","羊"};
              System.out.println(year + "年的生肖為:" + years[year % 12]);
              return "1";
          }
         }

      示例:打亂順序

      /*
       * 需求:將數(shù)組中的數(shù)據(jù)打亂順序
       */
      import java.util.Arrays;
      
      public class Work5 {
          public static void main(String[] args) {
              int [] list = randomInitArray();
              System.out.println("打亂前:" + Arrays.toString(list));
              disrupt(list);
              System.out.println("打亂后:" +Arrays.toString(list) );
          }
          /**
           * 生成隨機數(shù)組
           * 
           */
          public static int[] randomInitArray() {
              int[] list = new int[10];
              for(int i = 0; i < list.length; i++) {
                  list[i] =(int)( Math.random() * 100);
              }
              return list;
          }
          /**
           * 打亂順序
           * @param list 
           */
          public static void disrupt(int[] list) {
              for(int i = 0 ; i<list.length ; i++) {
                  int index = (int)(Math.random()*list.length);
                  int temp = list[i];
                  list[i] = list[index];
                  list[index] = temp;
              }
          }
      }

      示例:給定兩個數(shù)組,打印它們的共同元素

      /*
       * 需求:打印兩個有序數(shù)組中的共同元素
       * 
       */
      import java.util.Arrays;
      
      public class Work {
          public static void main(String[] args) {
              int[] list1 = {3,7,5,11,12,9};
              int[] list2 = {11,4,5,3};
              compareArray(list1,list2);
          }
          
          public static void compareArray(int[] list1,int[] list2) {
              Arrays.sort(list1);
              Arrays.sort(list2);
              
              for(int i = 0;i<list1.length;i++) {
                  for(int j=0;j<list2.length;j++) {
                      if(list1[i]==list2[j]) {
                          System.out.print(list1[i]+" ");
                      }
                  }
              }
          }
      }

      2)數(shù)組的復制

        在Java中,可以使用復制語句復制基本數(shù)據(jù)類型的變量,但不能復制數(shù)組。將一個數(shù)組變量賦值給另一個數(shù)組變量,實際上是將一個數(shù)組的引用賦值給另一個變量,使兩個變量都指向相同的內(nèi)存地址。

      1、使用循環(huán)語句逐個地復制數(shù)組的元素。

      int[] sourceArray = {1,5,7,11,12,-20};
      int[] targetArray = new int[sourceArray.length];
      for(int i = 0; i < sourceArray.length; i++)
      	targetArray[i] = sourceArray[i];
      System.out.println(Arrays.toString(sourceArray));
      System.out.println(Arrays.toString(targetArray)); 
      2、使用System類中的靜態(tài)方法arraycopy。

      語法:System.arraycopy(sourceArray,srcPos,targetArray,tarPos,length);

      其中,參數(shù)srcPos和tarPos分別表示在源數(shù)組sourceArray和目標數(shù)組targetArray中的起始位置,從sourceArray復制到targetArray中的元素個數(shù)由參數(shù)length指定。

      System.arraycopy(sourceArray,0,targetArray,0,sourceArray.length);

      3、使用clone方法復制數(shù)組。

      int [] array3 = sourceArray.clone();
      System.out.println(Arrays.toString(array3));	

      3)數(shù)組的傳遞

       Java使用按值傳遞的方式將實參傳遞給方法。

      • 對于基本數(shù)據(jù)類型參數(shù),傳遞的是實參的值。
      • 對于數(shù)組類型參數(shù),參數(shù)值是數(shù)組的引用,給方法傳遞的這個引用。

      示例1:

         /**
           * 從方法返回一個數(shù)組(反轉(zhuǎn)后的數(shù)組)
           * @param list 源數(shù)組
           * @return 反轉(zhuǎn)后的數(shù)組
           */
       //將數(shù)組傳遞給方法;從方法中返回數(shù)組
      public static int[] reverse(int[] list) { 
      int[] result = new int[list.length];
      for(int i = 0,j = result.length - 1; i < list.length; i++,j--)
        result[j]
      = list[i]; return result;
      }

      示例2:

      /*隨機生成100個小寫字母并將其放入到一個字符數(shù)組中,
      對該數(shù)組中每個字母出現(xiàn)的次數(shù)進行統(tǒng)計。*/
      
      package edu.study.array;
      
      public class StatisticsLetterCount {
          public static void main(String[] args) {
              //創(chuàng)建一個大小為100的字符數(shù)組,存入隨機小寫字母
              char[] letters = new char[100];
              for(int i=0;i<letters.length ; i++) {
                  letters[i]=randomLowerLetter();
              }
              //
              int[] times = new int[26];
              for (char letter : letters) {
                  times[letter - 'a']++;
              }
              
              for(int i = 0;i<times.length ;i++) {
                  System.out.println((char)('a'+i)+":"+times[i]);
              }
          }
          /**
           * 隨機生成的小寫字母
           * @return
           */
          public static char randomLowerLetter() {
              return (char)('a' + Math.random() * ('z' - 'a'));
          }
      }

      4)數(shù)組的排序

      1、選擇排序

      原理:首先找到數(shù)組中最小的數(shù),然后將它和第一個元素進行交換;在剩下的數(shù)中找到最小數(shù),然后將它和第二個元素進行交換;依次類推,直到數(shù)列中只剩下一個元素

      public static void selectionSort(int[] array) {
              for(int i = 0; i < array.length - 1; i++) {
                  int currentMin = array[i];
                  int currentMinIndex = i;
                  for(int j = i + 1; j < array.length; j++) {
                      if(currentMin > array[j]) {
                          currentMin = array[j];
                          currentMinIndex = j;
                      }
                  }
                  if(currentMinIndex != i) {
                      array[currentMinIndex] = array[i];
                      array[i] = currentMin;
                  }
              }
          }

      2、冒泡排序 (下沉排序)

      原理:前一個跟后一個比較,大的往后移

      public static int[] bubbleSorted(int[] array) {
              //i表示次數(shù)
              for (int i = 0; i < array.length - 1; i++) {
                  //j代表每次比較完后結(jié)束的位置
                  for (int j = 0; j < array.length - 1; j++) {
                      if (array[j] > array[j + 1]) {
                           int tmp=array[j];
                           array[j]=array[j+1];
                           array[j+1]=tmp;
                      }
                  }
              }
              return array;
          }

      5)數(shù)組的查找

       1、線性查找

      原理:從數(shù)組的第一個元素依次比較,若相同,則返回該元素對應索引

      public static int linearSearch(int key,int[] list) {
          for(int i = 0; i < list.length; i++) {
              if(list[i] == key) return i;
          }
          return -1;
      }

      2、二分查找(折半查找)

      原理:每次折半取中間數(shù),如果關鍵字小于中間元素,只需要在數(shù)組的前一半進行查找;如果關鍵字大于中間元素,只需要在數(shù)組的后一半進行查找;相等,就返回mid

      前提:數(shù)組是一個有序數(shù)組 

      public static int binarySearch(int key, int[] list) { //參數(shù):要查找的數(shù) ,數(shù)組
          int low = 0;
          int high = list.length - 1;
          while(high >= low) {int mid = (low + high)/2;
              if(key < list[mid])
                  high = mid - 1;
              else if(key > list[mid])
                  low = mid + 1;
              else
                  return mid;
          }
          return -low - 1;
      }

      六、Arrays類(java.util.Arrays) 

      Arrays類包含各種各樣的靜態(tài)方法,用于實現(xiàn)數(shù)組的排序和查找、數(shù)組的比較和填充數(shù)組元素,以及返回數(shù)組的字符串表示。這些方法都有對所有基本類型的重載方法。

      排序:sort  ;   parallelSort

      二分查找:binarySearch

      是否相等:equals

      填充數(shù)組:fill

      打印數(shù)組:toString

      等等......

       

      練習:給定一個整數(shù)數(shù)組,例如{6,4,7,2,5,8}和一個數(shù)字,例如10,請設計一個函數(shù)找出兩個元素(或同一個元素加自身),并且使這兩個數(shù)的和為給定數(shù)字,并打印出來(提示:先進行數(shù)組排序)

      package edu.study.array.practice_1031;
      
      import java.util.Arrays;
      import java.util.Scanner;
      
      public class Work7 {
          public static void main(String[] args) {
              int[] list = {6,4,7,2,5,8};
              Arrays.sort(list);
              System.out.println("請輸入一個數(shù):");
              Scanner input = new Scanner(System.in);
              int num = input.nextInt();
              input.close();
              sumOfgetNumber(list,num);
          }
          /**
           * 判斷兩數(shù)之和或本身2倍是否等于number(遍歷兩遍)
           * @param list 數(shù)組
           * @param number 要比較的數(shù)
           * 
           */
          public static void sumOfgetNumber(int[] list,int number) {
              for(int i=0;i<list.length;i++) {
                  for(int j =i+1;j<list.length;j++) {
                      if(list[i]+list[j]==number) {
                          System.out.println(list[i]+"+"+list[j]+"="+number);
                      }
                  }
                  if(list[i]*2==number) {
                      System.out.println(list[i]+"*"+2+"="+number);
                  }
              }    
          }
      }

       

      posted on 2023-11-07 22:29  L0ngyc  閱讀(52)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 成人午夜视频一区二区无码| 天堂在线中文| 伊人久久大香线蕉网av| 国产色a在线观看| 欧美日韩精品一区二区三区高清视频 | 国产精品亚洲av三区色| 国产免费播放一区二区三区| 国产亚洲AV电影院之毛片| 人妻av无码一区二区三区| 国产精品毛片一区视频播| 漂亮的人妻不敢呻吟被中出| 亚洲av色香蕉一区二区三区精品| 久热这里只有精品12| 久久亚洲国产五月综合网| 国产又色又爽又黄的在线观看| 国产色视频网站免费| 国产成人a在线观看视频| 精品国产乱弄九九99久久| 狠狠色噜噜狠狠狠狠2021| 天天看片视频免费观看| 熟女熟妇乱女乱妇综合网| julia无码中文字幕一区| 人妻体内射精一区二区三区| 亚洲精品无码成人A片九色播放| 无码人妻斩一区二区三区| 亚洲成人av在线资源| 一本久道中文无码字幕av | 不卡高清AV手机在线观看| 亚洲风情亚aⅴ在线发布| 欧洲国产成人久久精品综合| 亚洲国产成人综合精品| 国产在线视频www色| av亚洲一区二区在线| 久久精品国产蜜臀av| 日本高清视频在线www色 | 绩溪县| 国产精品成人一区二区三区| 日韩有码精品中文字幕| 美女黄网站18禁免费看| 久久亚洲色www成人欧美| 四虎永久精品在线视频|