激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java基礎之數組常用操作總結(必看篇)

java基礎之數組常用操作總結(必看篇)

2020-11-05 16:12Java教程網 Java教程

下面小編就為大家帶來一篇java基礎之數組常用操作總結(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

常用的對數組進行的操作

1、求數組中最大值,最小值

思路:假設下標為0的元素是最大值,遍歷數組,依次跟max進行比較,如果有元素比這個max還大,則把這個值賦給max。最小值同樣

java" id="highlighter_991761">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TestArray{
  public static void main(String[] args){
    int[] arr={23,45,234,576,34,87,34,12,67};
    int max=arr[0];
    int min=arr[0];
    for(int i=0;i<arr.length;i++){
      if(arr[i]>max){
        max=arr[i];
      }
      if(arr[i]<min){
        min=arr[i];
      }
    }
    System.out.println("數組中最大值為:"+max);
    System.out.println("數組中最小值為:"+min);
  }
}

2、查找數組中是否存在某個元素

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
public class TestArray{
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    int[] arr={23,45,234,576,34,87,34,12,67};
    System.out.println("請輸入你要查找的元素");
    int element=in.nextInt();
    int i,flag=0;
    for(i=0;i<arr.length;i++){
      if(arr[i]==element){
        flag=1;
        break;
      }
    }
    if(flag==1){
      System.out.println("你要查找的元素的下標為:"+i);
    }else{
      System.out.println("你要查找的元素不存在");
    }
  }
}

(2)、用二分查找法查找數組中是否存在某個元素

前提:待查找的數組必須是有序的(大小有序)

原理:將待查找的元素與數組中中間下標的元素進行比較,如果大于中間元素,去右邊查找,小于中間元素,去左邊查找。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static int binarySearch(int[] arr,int ele){
    int left=0;
    int right=arr.length-1;
    int mid;
    int index=-1;
    while(left<=right){
      mid=(left+right)/2;
      if(arr[mid]==ele){
        index=mid;
        break;
      }else if(arr[mid]<ele){
        left=mid+1;
      }else if(arr[mid]>ele){
        right=mid-1;
      }
    }
    return index;
  }

3、對數組進行排序

(1)、冒泡排序

原理:相鄰元素進行比較,小的往前趕,大的往后冒,最大值出現的最大索引處

分析:第一次進行比較,大的往后冒,會把最大值排在最大索引處

第二次進行比較,因為最大值已經確定了,只需要比較前n-1個元素即可,確定一個第二大值排在第二大索引處

依次確定第三大值,第四大值.............

結論:N個數字來排隊,兩兩比較小靠前,外層循環n-1,內層循環n-1-i

java基礎之數組常用操作總結(必看篇)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class TestArray{
  public static void main(String[] args){
    int[] arr={10,3,8,1,6};
    //外層循環控制比較輪數
    for(int i=0;i<arr.length-1;i++){
      //內層循環控制每輪比較次數
      for(int j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    }
    //遍歷數組
    for(int i=0;i<arr.length;i++){
      System.out.println(arr[i]);
    }
  }
}

(2)、選擇排序

原理:從下標0處開始,依次和后邊的元素進行比較,如果后面元素小于下標0的元素,換位。拿新的下標為0的元素和后邊的進行比較。第一次完畢,最小值出現在索引0處

例:{10,3,8,1,6}

第一輪比較,從0下標元素開始,依次和后邊的元素進行比較,先是10和3進行比較,10<3,交換位置,下標0的元素變成3,{3,10,8,1,6};再拿3和8比較,3<8,不換位;3和1進行比較,3>1,換位

{1,10,8,3,6},然后拿1和6進行比較,1<6,不換位置。第一輪結束,{1,10,8,3,6}

第二輪比較,上一輪已經確定了下標0的元素為最小值,這輪比較從下標1開始,先是10和8比較,換位{1,8,10,3,6};8和3比較,換位{1,3,10,8,6},3和6比較,不換位。第二輪結束,確定倒數第二小的元素在下標1位置。

........

共比較length-1輪。

java基礎之數組常用操作總結(必看篇)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class TestArray{
  public static void main(String[] args){
    int[] arr={10,3,8,1,6};
    for(int i=0;i<arr.length-1;i++){
      for(int j=i+1;j<arr.length;j++){
        if(arr[i]>arr[j]){
          int temp=arr[i];
          arr[i]=arr[j];
          arr[j]=temp;
        }
      }
    }
    //遍歷數組
    for(int i=0;i<arr.length;i++){
      System.out.println(arr[i]);
    }
  }
}

4、刪除數組中元素

(1)根據下標刪除元素(空位補0)

?
1
2
3
4
5
6
7
public static void delete(int[] arr,int index){
    for(int i=index;i<arr.length-1;i++){
      arr[i]=arr[i+1];
    }
    arr[arr.length-1]=0;
    System.out.println(Arrays.toString(arr));
  }

(2)根據輸入的元素刪除數組中對應的元素

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void delete(int[] arr,int ele){
    int index=-1;
    for(int i=0;i<arr.length;i++){
      if(arr[i]==ele){
        index=i;
      }
    }
    for(int i=index;i<arr.length-1;i++){
      arr[i]=arr[i+1];
    }
    arr[arr.length-1]=0;
    System.out.println(Arrays.toString(arr));
  }

下面介紹一些API里面常見的對數組的操作

在java中,除java.lang包下的類和接口可以直接使用外,其他包下的類或接口在使用時需要先導包。

java.util.Arrays類:此類包含用來操作數組(比如排序和搜索)的各種方法。

這些都是靜態方法,可以類名.方法名直接使用,這里都以int型數組為例

1、對數組進行快速排序

Arrays.sort(int[] arr);對傳入的數組默認進行升序排序

2、返回指定數組內容的字符串表現形式。

Arrays.toString(int[] arr);

3、使用二分法搜索制定數組中的某個元素的下標

Arrays.binarySearch(int[] arr);

4、將將指定的 int 值分配給指定 int 型數組的每個元素。

Arrays.fill(int[] arr,int val);

5、復制指定的數組,截取或用 0 填充(如有必要),以使副本具有指定的長度。

Arrays.copyOf(int[] arr,int newLength);它的返回值是一個數組

6、將指定數組的指定范圍復制到一個新數組。 包含起始位置但不包含結束位置。

Arrays.copyOfRange(int[] arr,int from,int to);它的返回值是一個數組

 

其他數組知識:

1、命令行參數:可以在執行java命令時為main方法傳入參數值。

用法:運行java命令時傳入命令行參數: java 類名 "值1" "值2"...

public static void main(String[] args){},我們可以看到main方法是一個有參的方法,參數是一個字符串數組,在命令行為main方法傳值時,傳入的值都保存在args字符數組里。

注意:多個參數值之間用空格分割。參數的值將會保存到字符串數組傳入main方法,下標從零開始。

在獲取命令行參數時需要注意下標不能越界,最大下標應該為參數的個數-1

?
1
2
3
4
5
public static void main(String[] args){
     for(int i=0;i<args.length;i++){
         System.out.println(args[i]);
     }
 }

2、可變參數

可變參數是java1.5之后的新特性,可以代表零到多個相同數據類型的變量,是為了解決因參數個數的變化而導致過多的方法重載問題。

注意:

1、可變參數只能用于形式參數(方法定義時),可以把可變參數當作數組來處理。

2、一個方法在最多只能有一個可變參數,可變參數必須作為最后一個參數。

3、調用帶可變參數的方法時,數據類型必須與可變參數的類型對應。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test1 {
  public static void main(String[] args){
    double sum=add(4,2.1,3.4,1.2);
    System.out.println(sum);
  }
  public static double add(int a,double...b){
    double sum=a;
    for(int i=0;i<b.length;i++){
      sum+=b[i];
    }
    return sum;
  }
}

例題:

合并數組操作:現有如下一個數組:   int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}   要求將以上數組中值為0的項去掉,將不為0的值存入一個新的數組,生成的新數組為: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5} 

思路: 確定出不為0的個數,這樣可以開辟新數組;從舊的數組之中,取出內容,并將其賦給新開辟的數組。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test1 {
  public static void main(String[] args){
    int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
    int[] arr=mergeArrays(oldArr);
    System.out.println(Arrays.toString(arr));
  }
  public static int[] mergeArrays(int[] oldArr){
    int count=0;
    for(int i=0;i<oldArr.length;i++){
      if(oldArr[i]!=0){
        count++;
      }
    }
    int[] newArr=new int[count];
    int index=0;
    for(int i=0;i<oldArr.length;i++){
      if(oldArr[i]!=0){
        newArr[index]=oldArr[i];
        index++;
      }
    }
    return newArr;
  }
}

2、使用二分法查找有序數組中元素。找到返回索引,不存在輸出-1。使用遞歸實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Test1 {
  public static void main(String[] args){
    int[] arr={1,2,3,4,5,6,7,8};
    int index=binarySearch(arr,6,0,arr.length-1);
    System.out.println(index);
  }
  public static int binarySearch(int[] arr,int ele,int left,int right){
    int mid=(left+right)/2;
    if(arr[mid]==ele){
      return mid;
    }else if(arr[mid]<ele){
      return binarySearch(arr,ele,mid+1,right);
    }else if(arr[mid]>ele){
      return binarySearch(arr,ele,left,mid-1);
    }
    return -1;
  }
}

以上這篇java基礎之數組常用操作總結(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品视频一区二区三区四区五区 | 中文字幕在线观看成人 | 91av资源在线 | 亚洲影视在线观看 | 视频国产一区二区 | 亚洲精品在线观看免费 | 国产99视频在线观看 | 福利在线小视频 | 成人男男视频拍拍拍在线观看 | 久久久精品精品 | 狠狠99 | 羞羞的视频免费在线观看 | 久久久久久久久久久av | 国产成人精品自拍视频 | 国产乱一区二区三区视频 | 日本黄肉网站在线观看 | 久久亚洲精品久久国产一区二区 | 毛片118极品美女写真 | 久草在线最新 | 视频一区二区国产 | 久久久久久久久久久久久九 | 国产免费区| 国产精品免费一区二区三区四区 | 亚洲第五色综合网 | 欧美视频一二三区 | 午夜久久久精品一区二区三区 | 色玖玖综合 | 欧美性生活网站 | 亚洲精中文字幕二区三区 | 国产一级免费在线视频 | 欧美日韩视频网站 | 成人国产精品一区二区毛片在线 | 国产精品伊人久久 | 国产亚洲精品综合一区 | 免费看成年人网站 | 免费永久在线观看黄网 | 一本一本久久a久久精品综合小说 | av电影网站在线 | 国产精品av久久久久久网址 | 黄色片在线免费播放 | 国产超碰人人爽人人做人人爱 |