国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 編程語言 - Java教程 - Java數據結構之數組(動力節點之Java學院整理)

Java數據結構之數組(動力節點之Java學院整理)

2020-09-11 10:14動力節點 Java教程

這篇文章主要介紹了Java數據結構之數組(動力節點之Java學院整理)的相關資料,包括創建和內存分配,數組封裝后的使用等,需要的朋友參考下吧

數組的用處是什么呢?——當你需要將30個數進行大小排列的時候,用數組這樣的數據結構存儲是個很好的選擇,當你是一個班的班主任的時候,每次要記錄那些學生的缺勤次數的時候,數組也是很有用。數組可以進行插入,刪除,查找等。

1)創建和內存分配

Java中有兩種數據類型,基本類型和對象類型,也有人稱為引用類型,Java中把數組當成對象,創建數組時使用new操作符。

?
1
int array[] = new int[10];

既然是對象,那么array便是數組的一個引用,根據Java編程思想(一) —— 一切都是對象 的內存分配,array會在棧中開辟空間,并且空間存儲著保存數組存儲的地址,真正保存對象的地方是對,new操作在堆中開辟了所需的空間,然后array指向頭地址。

初始化:

?
1
2
3
4
5
6
7
8
9
public class UseArray {
   public static void main(String[] args) {
     int array[] = new int[10];
     System.out.println(array[2]);
     UseArray a[] = new UseArray[12];
     System.out.println(a[1]);
     int array2[] ={1,2,3,4,5,5,6};
   }
 }

new后的數組里面的值被默認初始化為0,而對象的初始化是空的,null,當然還可以通過{}的方式初始化。

2)數組封裝后的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class UseArray {
   private int[] array;
   private int number = 0;
   public UseArray(int max){
     array = new int[max];
   }
   public void insert(int value){
     array[number] = value;
     number++;
   }
   public int find(int value){
     for (int i= 0; i < number; i++) {
       if(array[i]==value)
         return i;
     }
     return number;
   }
   public boolean delete(int value){
     int index = find(value);
     if(index != number){
       for (int i = index; i < number-1; i++) {
         array[i] = array[i+1];
       }
       number--;
       return true;
     }
     return false;
   }
   public void display(){
     for (int i = 0; i < number; i++) {
       System.out.printf(array[i]+" ");
     }
   }
   public static void main(String[] args) {
     UseArray ua = new UseArray(5);
     ua.insert(1);
     ua.insert(2);
     ua.insert(6);
     ua.insert(7);
     ua.insert(3);      
     ua.display();
     if(ua.find(5) != ua.number){
       System.out.println("find,the number index is "+ua.find(5));
     }else{
       System.out.println("not found!");
     }
     if(ua.delete(5)!=true){
       System.out.println("can not delete!");
     }
    ua.display();
   }
 }

將整個數組封裝,用number代替數組的個數,插入數據的時候也不必理會往哪個下標插,當然,也可以自定義一個具體下標的方法。

方法比較簡單就不介紹了,但是存在的一個缺點在delete那里,其實只是從刪除元素開始的左移而已,所以,雖然number減少了,但是最后一個元素并沒有刪除掉,只是display輸出展示的時候隱藏了而已,但是,下次插入元素的時候新元素便會取代掉最后一個元素的位置。

3)查找優化——二分查找

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int find(int value){
    int start = 0;
    int end = number-1;
    while(end>=start){
      int index =(end + start)/2
      if(array[index]==value){
        return index;
      }else if(array[index] >value){
        end = index-1;
      }else
        start = index+1;
      }
    }
    return number;
  }

二分查找前提是數組已經有序。剛開始index寫成end和start相減,造成死循環。其實要的是相加。1,2,3,6,7。index=2,value=7,3小于7,start=3,那么index要的是3和4間的中間數,所以是相加之后除以2,6小于7,start=4,find到7。

4)大O表示法

設N為數據總數,加入插入一個數據時間為K。那么線性查找總時間T=K*N/2,因為查找的話大概為比較數目的一半。

二分查找的話T=k*log2(N)。大O表示法,O可以看成是order of,大約是的意思,k/2也是常數,所以可以看成是O(N)。

數組的缺點呢,就是大小固定,查找慢,如果你要經常查找百萬級別的數據,還會用數組嗎?不會的,所以數據結構的選用要結合具體的實際情況,達到最大的效率值。

以上所述是小編給大家介紹的Java數據結構之數組(動力節點之Java學院整理),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕在线观看一区二区三区 | 高清视频一区二区三区 | 成人精品一区二区三区 | 亚洲免费观看视频网站 | 日韩精品视频在线播放 | 九九免费精品视频 | 国产三级 | av中文字幕第一页 | 日韩精品一区二区三区在线观看视频网站 | 日韩精品一区二区三区在线观看视频网站 | 精品国产乱码久久久久久久软件 | 在线色网站 | 久久精品一 | 国产免费网址 | 精品国产免费久久久久久尖叫 | 久久亚洲天堂 | 日韩一二三区视频 | 成人国产精品视频 | av免费网站在线观看 | 天天碰天天操 | 亚洲精品久久久蜜桃 | 欧美黑人狂躁日本寡妇 | 中文字幕日韩在线 | 一级片国产 | 亚洲成人免费在线 | 中国精品一区二区 | 污视频网站在线观看 | wwwav在线 | 国产亚洲精品精品国产亚洲综合 | 99精品国产一区二区青青牛奶 | 日韩性精品 | 视频一区二区国产 | 亚洲综合色成在线播放 | 日本高清视频在线 | 欧洲精品码一区二区三区免费看 | 欧美精品亚洲精品 | 日韩av一区二区在线观看 | 亚洲国产一区在线 | 日日操夜夜操天天操 | 狠狠se| 成人免费黄色毛片 |