麥子java黑馬程式設計師前輩之路入門基礎java數組折半查找案例例題

2020-12-11 java黑馬程式設計師前輩

在了解java數組排序功能塊代碼的操作後

下面咱們再來分享下關於給定一個元素,然後在數組中查找元素是否存在,如果存在則輸出對應數組元素下的角標,如果不存在則輸出-1;

java在數組中查找某一個元素案例

上圖所示,在給定的數組裡查找對應元素的角標位置數,上圖是查找存在的元素位置,如過查找的元素不存在數組裡頭編譯會如何?如下圖

java數組中不存在查找

當然,返回-1還是提示不存在這裡都是按程序要求來更改,而這裡咱們就力求方便吧直接不存在返回負一

另外,如過查找的數在數組裡頭出現過2次?那麼返回的角標是算第一個還是第二個還是全部顯示?代碼示意圖如下:

java數組中查找元素出現多次情況

綜合上圖例題可以看得出來,java數組中如果出現查找對象2次或多次的,所輸出角標位置均以第一個出現的數為準,如上圖例題,查找46,而第一個46出現在角標為3的位置上,所以輸出3

為了進一步了解排序咱們現在在來了解下折半查找

生活中我們經常會和朋友說,我說一個數你猜下多少,範圍是1-100之間,那怎麼猜呀?

如果我們說小於50 ?

如果我們說小於25?

這是不是折半查找?這是不是可以提高效率?但是前提是什麼?是1-100是有序的對不?

那話題來了,咱們的所謂java數組折半查找來了~~哈哈哈哈~~!~是不是很明了尼?

比如說我要找一個值 這個值是多少?是65!

你們我們是不要先找到最小值0? min=0

然後再找個最大值?max=arr.length-1;(因為折半查找啊都是有序數組查找,所以咱們可以直接定位到最後一位元素數據)

最後咱們在取個中間值 mid=(min + max)/2(最小加最大除以2就是中間值啦)

有些朋友可能會問,如果不能被2整除怎麼辦? 這是不需要擔心的,咱們這個是向下取整滴,比如說,最大角標是5,那麼5鐵定是不能被2整除的嘛,而5/2=2.5,則去角標2

然後咱們從中間角標2開始,然後看下中間角標2是否大於咱們要查找的數?如果大於則中間角標值加1,如果小於則中間角標值減1

以此類推,不管大於或小於,咱們在對剩下的元素數據角標再進行折半,然後在查看大於下於或是等於,如果等於則輸出查找到的值,如果小於或大於,就在對剩下的區間值進行折半查找

從上述說明可以總結出,折半查找的動作是可以重複的 去做滴。然後重複的事情,咱們是可以使用循環的去做滴

java數組折半查找方法1

相關焦點

  • 零基礎java入門教程java數組常見操作最大值最小值和重載複習例題
    0基礎java入門 java數組的常見操作:獲取最值下面通過獲取最大值來舉一反三獲取最小值同樣的和咱們之前講的一樣,在開始先程序前,先不要直接就開始寫代碼,一定要先將要求和思路步驟先寫清楚,然後在通過這些要求步驟和思路來寫出代碼程序
  • Java基礎——數組例題&二維數組
    聲明:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。數組例題:例題1:申請String字符串數組,並拿出裡面的數據。先申請一個String字符串,然後最裡面輸入要存儲的值,使用for循環申請變量i,i小於String數組的長度(.Length),然後列印String數組的第i個值就可以取出裡面的數組。
  • Java基礎學習心得筆記
    對於很多只會C語言的初學者而言,面對java基礎語法學習,反而感覺很難,其實其中最大的問題不是語法難,而是一種編程思想的轉變。
  • java基礎之七:數組
    數組的要素:名稱,類型,下標(從0開始)數組要在定義的時候確定長度(大小),後面就可以使用了,如下的案例:數組的存儲下面的例子是典型的用法,從一個數組中查找某個值在不在其中數組中查找這是數組求和查找最大及其位置數組的排序,有很多方法,比如冒泡:當然,java提供了相關的實現,在java.util.Arrays中:
  • java如何快速入門?
    java如何快速入門正確掌握Java的基本知識由於Java為開發人員提供了如此多的特性和選項,人們有時會被分散注意力在太短的時間內學習了太多的東西java如何快速入門真正弄懂你敲出的代碼是做什麼的只要你理解了代碼背後的思想,算法和整個編譯過程就會顯得非常有意義。
  • 黑馬程式設計師武漢中心——javaee面試寶典java基礎
    1、Java基礎1.1 Collection和Map1.2 IO流1.3 異常1.4 多線程1、Java基礎1.1 Collection查找元素需要順序查找ArrayList和LinkList的區別ArrayList(數組結構):優點:get和set調用花費常數時間,也就是查詢的速度快;缺點:新項的插入和現有項的刪除代價昂貴,也就是添加刪除的速度慢
  • 黑馬程式設計師java培訓機構如何?好口碑java培訓機構如何選?
    大大小小的Java培訓機構多如牛毛,幾個人經過簡單的包裝就會成為精英人士混淆視聽,因此想要知道黑馬程式設計師java培訓機構如何?好口碑java培訓機構如何選?我們就要考全面慮。想要知道一家java培訓機構好不好,品牌和實力是最為重要的,實力如何就要看師資力量了,擁有豐富實戰經驗的導師會結合學員過往的工作經歷、學習表現、階段性成績、項目成績等,為學員提供最佳的專業輔導。課程安排方面會凸顯這家java培訓機構的專業,畢竟專注的總歸是專業的,java培訓起來理論必須加實踐,因為最終的目的是打造符合企業需求的java人才。
  • 一起學JAVA——數組和函數
    之前我們介紹了java的數據類型、變量、流程控制等內容。今天我們高級數據類型——數組以及函數的作用。函數(方法)函數的定義函數就是一段有名字的代碼,可以完成某一特定功能。與數組操作相關函數Arrays.toString() 查找幫助文檔Arrays類,學習使用此方法將字符串轉為字符串形式。
  • 軟帝學院:Java程式設計師入門必看的 4 本 Java 書籍!
    01《Head First Java》作為一本入門書,它是絕對出色的。一個星期就能讓你明白怎麼用Java寫程序了。尤其是你有其它語言基礎的情況下,這本書能迅速讓你明白Java的特質。 缺點是,它真的只是入門書。02《Java 核心技術:卷1 基礎知識》
  • JAVA學習之路(總結)--基礎篇二
    JAVA學習之路(總結)--基礎篇二是在基礎篇一上的延續,想看基礎篇一的同學們,可以關注一下我呦,在我的歷史發布就可以看到。喵~~~~喵~~~~喵~~~~先說一個題外話~~~大家學習java一方面是為了興趣,當然另一方更想著賺更多的Money吧,嘿嘿嘿~就深圳來講,Java程式設計師薪資水平一般如下:應屆生:普通5K左右,能力強8K左右;1年工作經驗:普通8K,能力強1W+;2年工作經驗:普通9K,能力強1.2W+;3年工作經驗:普通1.5W+,
  • JAVA基礎知識點03_數組
    當聲明數組時,往棧中壓入nums,只是一個名字,此時數組還不存在。靜態初始化(程式設計師先賦值,系統計算長度):int[] a = {1,2,3,4,5,6,7,8}動態初始化(程式設計師先指定數組長度,系統先自動賦默認值,然後再由程式設計師重新賦值):int[] b = new int[8];b[0] = 1;數組一旦創建(實例化),其長度就已確定,不可改變.數組一旦越界
  • Java程式設計師進階:Java4大核心基礎必備知識點
    本文總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點,不要一味地照著書本敲代碼,而不去理解。
  • JAVA8——JAVA成長之路
    ,但Java編譯器並不想讓程式設計師意識到Filters的存在。對日期與時間的操作一直是Java程式設計師最痛苦的地方之一。標準的 java.util.Date以及後來的java.util.Calendar一點沒有改善這種情況(可以這麼說,它們一定程度上更加複雜)。這種情況直接導致了Joda-Time——一個可替換標準日期/時間處理且功能非常強大的Java API的誕生。
  • 尚學堂知識整理:java數組
    數組是什麼?數組是一個固定長度的數據結構,用於保存多個相同數據類型的值。在數據類型之後或在變量聲明中的變量名稱之後放置[],使變量成為數組。如果要聲明數組,可在上面的聲明中的數據類型之後放置[],如下所示 –創建數組數組創建的一般語法如下:以下代碼創建Arraylength長度類型為ArrayDataType的數組對象
  • 給Java程式設計師的20個鍊表面試題
    鍊表則是對數組數據結構進行的補充,是另一種常見的數據結構。和數組相似的是,鍊表也是線性數據結構,並以線性方式儲存元素。但是,和數組不同的是,鍊表不將元素儲存在連續的位置;相反,其元素分散在內存中的各個地方,並以節點進行相互連接。鍊表不過是一個節點的列表,其中每一個節點都包含存儲的值和下一個節點的位置。
  • java入門必備書籍
    共覆蓋了java.awt、java.lang、java.io和java.nio、java.sql、java.text、java.util、javax.swing包下絕大部分類和接口。只要你真正想學習Java,你翻開書看上十多分鐘,你絕對會被這本書吸引,介紹操作的部分,非常具體。2.Java2入門經典
  • java基礎案例之java語言組成和數據類型與強制類型轉換語法
    java語言組成包含:1:關鍵字,2:標識符。3:注釋。4:常量和變量。5:運算符 。 6:語句 7:函數 8:數組。java數據類型定義變量格式:數據類型 變量名 =初始化值;例如:int x =4;
  • java編程從入門到放棄?關於Java自學,我的3點思考
    首先,Java作為一門適用性很強的語言,入門是不難的。但要系統全面地自學Java,那可就很難了!如果每個人都能通過自學,系統全面的掌握Java。在你知道了自學會面臨這些困難,依然堅定不移地要踏上自學之路時,說明你已經具備了自學的核心要素之一:強大的信念!2、如何自學java?有了堅定的學習信念後,咱們再來說怎麼學。
  • Java初學者入門指南,值得收藏~
    很多Java編程初學者在剛接觸Java語言程序的時候,不知道該學習掌握哪些必要的基礎知識。小編總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點。
  • Java程式設計師憑什麼工資那麼高?
    首先,我們看一下有關調查統計的數據:相信大家都能看得出Java程式設計師的在這些行業中的工資待遇確實很高,引起大家羨慕不已,甚至很多人因為它的高收入而去轉行。那為什麼Java程式設計師的工資這麼高?接下來我們詳細分析一下。