最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)據(jù)結構之數(shù)組(動力節(jié)點之Java學院整理)

 更新時間:2017年04月14日 09:47:57   投稿:mrr  
這篇文章主要介紹了Java數(shù)據(jù)結構之數(shù)組(動力節(jié)點之Java學院整理)的相關資料,包括創(chuàng)建和內(nèi)存分配,數(shù)組封裝后的使用等,需要的朋友參考下吧

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

1)創(chuàng)建和內(nèi)存分配

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

 int array[] = new int[10]; 

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

初始化:

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后的數(shù)組里面的值被默認初始化為0,而對象的初始化是空的,null,當然還可以通過{}的方式初始化。

2)數(shù)組封裝后的使用

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(); 
   } 
 } 

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

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

3)查找優(yōu)化——二分查找

 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; 
   } 

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

4)大O表示法

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

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

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

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

相關文章

  • mybatis中${}和#{}的區(qū)別以及底層原理分析

    mybatis中${}和#{}的區(qū)別以及底層原理分析

    這篇文章主要介紹了mybatis中${}和#{}的區(qū)別以及底層原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring Cloud如何使用Feign構造多參數(shù)的請求

    Spring Cloud如何使用Feign構造多參數(shù)的請求

    這篇文章主要介紹了Spring Cloud如何使用Feign構造多參數(shù)的請求,以GET以及POST方法的請求為例進行講解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 詳解SpringBoot通過restTemplate實現(xiàn)消費服務

    詳解SpringBoot通過restTemplate實現(xiàn)消費服務

    本篇文章主要介紹了詳解使用RestTemplate消費spring boot的Restful服務,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java中stream是什么及如何使用

    Java中stream是什么及如何使用

    在Java中,Stream(流)是一種用于操作集合(Collection)、數(shù)組等數(shù)據(jù)源的API,Stream的主要作用是進行數(shù)據(jù)的轉換、篩選、聚合等操作,可以極大地簡化對數(shù)據(jù)的處理,本文給大家介紹Java中stream是什么?有什么作用?如何使用?感興趣的朋友一起看看吧
    2023-10-10
  • MyBatis中動態(tài)SQL的使用指南

    MyBatis中動態(tài)SQL的使用指南

    MyBatis 是一個流行的持久層框架,它通過 XML 或注解將接口方法與 SQL 映射在一起,動態(tài) SQL 是 MyBatis 的一大特性,它使得構建靈活的查詢變得簡單,本文將通過一個 User 表的示例,介紹 MyBatis 中常用的動態(tài) SQL 方法,需要的朋友可以參考下
    2024-09-09
  • SpringBoot獲取application.properties文件中文亂碼問題及解決

    SpringBoot獲取application.properties文件中文亂碼問題及解決

    這篇文章主要介紹了SpringBoot獲取application.properties文件中文亂碼問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中memcached的cache機制

    Java中memcached的cache機制

    這篇文章主要介紹了Java中memcached的cache機制,在Java中使用Memcached的緩存機制需要使用Java的Memcached客戶端庫。Memcached是一個高性能的分布式內(nèi)存緩存系統(tǒng),可以用來緩存常用的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • springboot 事件監(jiān)聽的實現(xiàn)方法

    springboot 事件監(jiān)聽的實現(xiàn)方法

    這篇文章主要介紹了springboot 事件監(jiān)聽的實現(xiàn)方法,并詳細的介紹了四種監(jiān)聽方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Spring 中使用Quartz實現(xiàn)任務調(diào)度

    Spring 中使用Quartz實現(xiàn)任務調(diào)度

    這篇文章主要介紹了Spring 中使用Quartz實現(xiàn)任務調(diào)度,Spring中使用Quartz 有兩種方式,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Java中while語句的簡單知識及應用

    Java中while語句的簡單知識及應用

    這篇文章主要給大家介紹了關于Java中while語句的簡單知識及應用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論

买车| 大连市| 定南县| 抚顺县| 醴陵市| 益阳市| 漠河县| 泾阳县| 连州市| 苏尼特右旗| 白山市| 呈贡县| 四子王旗| 万全县| 枝江市| 康乐县| 外汇| 政和县| 浠水县| 治县。| 台山市| 永寿县| 紫云| 敦煌市| 双柏县| 东方市| 错那县| 蓬安县| 周宁县| 大名县| 江安县| 烟台市| 静乐县| 松潘县| 余江县| 镶黄旗| 遂宁市| 龙游县| 牟定县| 上虞市| 南充市|