数组查找———二分(折半)查找法
生活随笔
收集整理的這篇文章主要介紹了
数组查找———二分(折半)查找法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路(PPT)
將要查找的元素和數組中間的元素比較,如果沒找到則繼續折半
代碼
int nums[] = {2, 5, 9, 1, 3};System.out.println(Arrays.toString(nums));//先排序,必要條件,不然無法左右兩邊數值Arrays.sort(nums);System.out.println(Arrays.toString(nums));//假設一個查找的數字int num = 9;//進行折半int zhongjian = (nums.length - 1) / 2;boolean pd = true;do {//開始比較,先和數組中間的值進行比較if (num > nums[zhongjian]) {//查找的數字大于中間數字,說明數字可能在右邊zhongjian++;} else if (num < nums[zhongjian]) {//查找的數字小于中間數字,說明數字可能在左邊zhongjian--;} else if (num == nums[zhongjian]) {System.out.println("找到了,下標為:" + zhongjian);break;}//判斷下標不能低于0也不能高于最大值if (zhongjian < 0) {pd = false;} else if (zhongjian > (nums.length - 1)) {pd = false;}} while (pd);if(!pd){System.out.println("沒有這個數字");}效果
個人思路
? ? ? ? 1.先決條件先給數組排序
? ? ? ? 2.算出數組的中間下標值
? ? ? ? 3.因為不確定比較次數,所以使用do while 循環比較
? ? ? ? 4.如果需要查找的值等于數組下標對應的值,那么就直接輸出并結束循環,如果大于數組下標對應的值,就說明查找的數字大于中間數字,說明數字可能在右邊,如果小于數組下標對應的值,那么就說明查找的數字小于中間數字,說明數字可能在左邊,那么就依次對應像讓下標++向右邊靠攏或者--向左邊靠攏,while來判斷不斷循環變換的下標是否超過最低最高值,超過結束循環,提示沒有找到該數字
總結
????????這個查找下標的方法從中間向兩邊擴散,看似解決了程序的資源,但是有一個先決條件需要先排序才能進行對折查詢,而排序耗費的算里依然比我們只用一個for循環來查找下標要多,所以根據使用情況來使用對折查詢法(如前面必須要求排序一下的話用這個方法就不錯)。
總結
以上是生活随笔為你收集整理的数组查找———二分(折半)查找法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光伏发电,火力发电,水电哪一种能量转换效
- 下一篇: Java中main函数只能调用同类中的静