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

詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找)

 更新時(shí)間:2017年09月23日 16:21:29   作者:臨窗聽(tīng)雨  
本篇文章主要介紹了詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、概述

有序數(shù)組中常常用到二分查找,能提高查找的速度。今天,我們用順序查找和二分查找實(shí)現(xiàn)數(shù)組的增刪改查。

二、有序數(shù)組的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):查找速度比無(wú)序數(shù)組快多了
缺點(diǎn):插入時(shí)要按排序方式把后面的數(shù)據(jù)進(jìn)行移動(dòng)

三、有序數(shù)組和無(wú)序數(shù)組共同優(yōu)缺點(diǎn)

刪除數(shù)據(jù)時(shí)必須把后面的數(shù)據(jù)向前移動(dòng)來(lái)填補(bǔ)刪除項(xiàng)的漏洞

四、代碼實(shí)現(xiàn)

public class OrderArray {
  
   private int nElemes; //記錄數(shù)組長(zhǎng)度
   
   private long[] a;
   
   /**
   * 構(gòu)造函數(shù)里面初始化數(shù)組 賦值默認(rèn)長(zhǎng)度
   *
   * @param max
   */
   public OrderArray(int max){
     this.a = new long[max];
     nElemes = 0;
   }
   
   //查找方法 (二分查找)
   public int find(long searchElement){
     int startIndex = 0;
     int endIndex = nElemes-1;
     int curIn;
     while(true){
       curIn = (startIndex + endIndex)/2;
       if(a[curIn]==searchElement){
         return curIn; //找到
       }else if(startIndex>endIndex){ //沒(méi)有找到
         return nElemes; //返回大于最大索引整數(shù)
       }else{ //還要繼續(xù)找
         if(a[curIn]<searchElement){
           startIndex = curIn + 1; //改變最小索引
         }else{ //往前找
           endIndex = curIn -1;
         }
       }
       
     }
   }
   
   
   //插入元素(線性查找)
   public void insert(long value){
     int j;
     for(j=0;j<nElemes;j++){
       if(a[j]>value){
         break;
       }
     }
     for(int k=nElemes;k>j;k--){
       a[k] = a[k-1];
     }
     a[j] = value;
     nElemes++;
   }
   
   //刪除數(shù)據(jù)項(xiàng)
   public boolean delete(long value){
     int j = find(value);
     if(j==nElemes){
       return false; //沒(méi)找到
     }else{
       //所有元素往前移動(dòng)一位
       for(int k=j;k<nElemes;k++)
       a[k] = a[k+1];
       
       nElemes--;
       return true;
     }
   }
   //展示的方法
   public void display(){
     for(int i=0;i<nElemes;i++){
       System.out.print(a[i]+" ");
     }
   }
   
   public int size(){
     return nElemes;
   }
}

五、測(cè)試

 public static void main(String[] args) {
     int max = 100;
     OrderArray oa = new OrderArray(max);
     oa.insert(12);
     oa.insert(14);
     oa.insert(90);
     oa.insert(89);
     oa.insert(87);
     oa.insert(88);
     oa.insert(67);
     oa.display();
     int searchkey = 90;
     if(oa.find(searchkey)!=oa.size()){
       System.out.println("found"+searchkey);
     }else{
       System.out.println("not found");
     }
     oa.delete(88);
     oa.delete(90);
     oa.delete(89);
     oa.display();
   }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot通過(guò)請(qǐng)求對(duì)象獲取輸入流無(wú)數(shù)據(jù)

    SpringBoot通過(guò)請(qǐng)求對(duì)象獲取輸入流無(wú)數(shù)據(jù)

    這篇文章主要介紹了使用SpringBoot通過(guò)請(qǐng)求對(duì)象獲取輸入流無(wú)數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Sentinel網(wǎng)關(guān)限流與SpringCloud Gateway整合過(guò)程

    Sentinel網(wǎng)關(guān)限流與SpringCloud Gateway整合過(guò)程

    本文介紹了如何通過(guò)SpringCloudGateway集成阿里的Sentinel進(jìn)行網(wǎng)關(guān)限流,Sentinel作為流量防衛(wèi)兵,提供了豐富的應(yīng)用場(chǎng)景和完備的實(shí)時(shí)監(jiān)控功能,通過(guò)配置路由維度和自定義API維度的限流規(guī)則,實(shí)現(xiàn)了對(duì)微服務(wù)的保護(hù)
    2024-11-11
  • Java String類簡(jiǎn)單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    Java String類簡(jiǎn)單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    這篇文章主要介紹了Java String類簡(jiǎn)單用法,結(jié)合具體實(shí)例形式分析了Java使用String類實(shí)現(xiàn)字符串的輸出和比較功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • SpringBoot接口訪問(wèn)頻率限制的實(shí)現(xiàn)方式

    SpringBoot接口訪問(wèn)頻率限制的實(shí)現(xiàn)方式

    接口訪問(wèn)頻率限制是通過(guò)在一定時(shí)間內(nèi)限制用戶對(duì)接口的訪問(wèn)次數(shù)來(lái)實(shí)現(xiàn)的,在Spring Boot中,我們可以通過(guò)多種方式來(lái)實(shí)現(xiàn)接口的限流,如使用過(guò)濾器、攔截器或者借助第三方庫(kù),本文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 東八區(qū)springboot如何配置序列化

    東八區(qū)springboot如何配置序列化

    本文主要介紹了東八區(qū)springboot如何配置序列化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java實(shí)現(xiàn)請(qǐng)求緩沖合并的示例代碼

    java實(shí)現(xiàn)請(qǐng)求緩沖合并的示例代碼

    我們對(duì)外提供了一個(gè)rest接口給第三方業(yè)務(wù)進(jìn)行調(diào)用,但是由于第三方框架限制,導(dǎo)致會(huì)發(fā)送大量相似無(wú)效請(qǐng)求,這篇文章主要介紹了java實(shí)現(xiàn)請(qǐng)求緩沖合并,需要的朋友可以參考下
    2024-04-04
  • Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn)

    Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn)

    在大多數(shù)的MQ中間件中,都有死信隊(duì)列的概念。本文主要介紹了Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車、迅雷)

    Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車、迅雷)

    這篇文章主要介紹了Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Java Comparator.comparing比較導(dǎo)致空指針異常的解決

    Java Comparator.comparing比較導(dǎo)致空指針異常的解決

    這篇文章主要介紹了Java Comparator.comparing比較導(dǎo)致空指針異常的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java后臺(tái)如何利用Pattern提取所需字符詳解

    java后臺(tái)如何利用Pattern提取所需字符詳解

    這篇文章主要給大家介紹了關(guān)于java后臺(tái)如何利用Pattern提取所需字符的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

长治市| 安多县| 光泽县| 溧水县| 耿马| 政和县| 牡丹江市| 祁东县| 阳信县| 长海县| 余姚市| 宜丰县| 陈巴尔虎旗| 康马县| 阆中市| 大丰市| 金塔县| 凤台县| 凤凰县| 玉门市| 山丹县| 滦平县| 云浮市| 大化| 孝感市| 邯郸市| 肃南| 上犹县| 和平县| 象州县| 孟州市| 祁阳县| 东兰县| 资溪县| 通河县| 通榆县| 榆树市| 法库县| 北辰区| 井研县| 聊城市|