您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java二分查找方法怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java二分查找方法怎么使用”吧!
題目
采用二分查找法查找特定關(guān)鍵字的元素。要求用戶輸入數(shù)組長度,也就是有序表的數(shù)據(jù)長度,并輸入數(shù)組元素和查找的關(guān)鍵字。程序輸出查找成功與否,以及成功時關(guān)鍵字在數(shù)組中的位置。例如,在有序表11、13、18、28、39、56、69、89、98、122中查找關(guān)鍵字為89的元素。
1、程序分析
二分查找就是折半查找,其基本思想是:首先選取表中間位置的記錄,將其關(guān)鍵字與給定關(guān)鍵字key進(jìn)行比較,若相等,則查找成功;若key值比該關(guān)鍵值大,則要找的元素一定在右子表中,則繼續(xù)對右子表進(jìn)行折半查找;若key值比該關(guān)鍵值小,則要找的元素一定在左子表中,繼續(xù)對左子表進(jìn)行折半查找。如此遞推,直到查找成功或查找失?。ú檎曳秶鸀?)。
2、程序?qū)崿F(xiàn)
/****************************************************** * Topic : 采用二分查找法查找特定關(guān)鍵字的元素。 * File Name: BinarySearch.c * Author : Jack Cui * Created : 6 April 2016 * ****************************************************/#include <stdio.h> #include <stdlib.h>/*歸并排序函數(shù)聲明*/void BinarySearch(int iKey,int *pArr,int iNum);void main(void) {int i,iKey,*pArr,iNum; printf("請輸入數(shù)組的長度:\n"); scanf("%d",&iNum); printf("請輸入數(shù)組元素:\n"); pArr = (int *)malloc(sizeof(int) *iNum);for(i = 0;i < iNum;i++) scanf("%d",&pArr[i]); printf("請輸入你想查找的元素:\n"); scanf("%d",&iKey); BinarySearch(iKey,pArr,iNum); }/********************************** *函數(shù)名稱:BinarySearch *參數(shù)說明:iKey 要查找的數(shù) * *pArr 數(shù)組 * iNum 數(shù)組大小 *說明: 二分查找 ***********************************/void BinarySearch(int iKey,int *pArr,int iNum) {int iLeft,iRight,iMid,iCount,iFlag; iCount = 0; //記錄查找次數(shù)iFlag = 0; //查找正確標(biāo)志位iLeft = 0; //左側(cè)最小值iRight = iNum - 1; //右側(cè)最大值while(iLeft <= iRight) //范圍正確的時候,進(jìn)行查詢。{ iCount++; //查找次數(shù)+1iMid = (iLeft + iRight) / 2; //二分if(iKey < pArr[iMid]) iRight = iMid - 1;else if(iKey > pArr[iMid]) iLeft = iMid + 1;else if(iKey == pArr[iMid]) { printf("查找成功!\n查找%d次!pArr[%d]=%d\n",iCount,iMid,iKey); iFlag = 1;break; } }if(iFlag == 0) printf("查找失敗!\n"); }
3、結(jié)果顯示
感謝各位的閱讀,以上就是“Java二分查找方法怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java二分查找方法怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。