-
c 程式:使用系統;
class program
static void main()
int arr = new int[100];
int max = 100;
int key;
int pos;
初始化陣列並對其進行排序。
initarray(arr, max);
sort(arr);
查詢資料。 查詢值:");
key =pos = find(arr, key);
if (pos == -1)
查詢表中不存在", key);
第乙個出現位置是", key, pos);
查詢表:");
print(arr);
初始化陣列,陣列元素的最大值為 max
static void initarray(int arr, int max)
random rand = new random();
for (int i = 0; i < i++)arr[i] = ;
陣列元素按非遞減方式排序(簡單選擇排序)。
static void sort(int arr)int i, j, k;
int temp;
for (i = 0; i < 1; i++)k = i;
for (j = i + 1; j < j++)if (arr[j] k = j;
if (k != i)
temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
如果是這樣,則返回索引號,否則為 -1。
static int find(int arr, int key)int low = 0;
int high = - 1;
int mid = 0;
while (low <= high)
mid = (low + high) / 2;
if (key == arr[mid])
return mid;
else if (key < arr[mid])high = mid - 1;
elselow = mid + 1;
return -1;
每行包含 10 個元素的輸出查詢表。
static void print(int arr)for (int i = 0; i < i++)"", arr[i]);
if (i % 10 == 9)
執行測試:<>
-
我不懂c,但除了語法之外,方法都是一樣的。
先對生成的數字進行排序(比如從小到大),然後把中間和要找的數字比對,大於中間的數字就放棄左找,否則丟棄右邊,然後繼續拿中間數的剩餘一半,和要找的數字比對...... 遞迴過程。
-
引導你寫作,而不是為你寫作。
如果要自己編寫,請新增986398487
我不會為你寫的。
-
我本來打算補的,但算了,樓下比我快,你可以選擇他。
-
二分法找到乙個數字,必須對原來的序列進行排序,注意序列中數字相同時該怎麼辦,即只有乙個無效的 binsrch( int m[n],int k)}printf("我沒有找到這個號碼,所以很抱歉");
return 0;}
-
二分法找乙個數字,原序列必須排序,有問題,序列中數字相同時怎麼辦,即只找到其中乙個 void binsrch( int m[n],int k)}printf("我沒有找到這個號碼,所以很抱歉");
return;}
-
int binarysearch(int a,int x,int n)
return -1;
我認為書中有乙個這樣的例子。
-
二樓的那個似乎是對的,但一樓的那個卻不是。
-
首先對二進位方法中找到的值進行排序。
-
#include
using namespace std;
A 是查詢陣列,二分查詢的前提是 A 中資料的順序是有序的。 key 是要找到的變數,n 是陣列 a 的長度。
int binary( int *a, int key, int n )
if( a[mid] == key ) return mid;
return -1;
呼叫:在陣列 a 的下標中查詢陣列 b 的位置(當 a 中不存在 b 中的資料時,將其替換為 -1)。
int main()
int i,b,c;
cout <<"輸入 10 個從小到大的整數:";
for(i=0;i<10;i++)
cin >>a[i];
cout <<"輸入要查詢的號碼:";
cin >>b;
c = binary(a,b,10);
if(c!=-1)
cout <<"找到,序列號:"<
-
intbinsearch(int*a,intn,inte) ***a 是陣列,n 是陣列大小,e 是要查詢的元素 * {intlow,mid,high;low=0;high=n-1;while(lowe)high=mid-1;elseif(a[mid]
-
include 不使用 math 標頭。
void main()
hing 和 low 被分配了初始值。
scanf("%d",&k);
while (high>=low)//>=}printf("no");
return;if 語句}
-
#include
#include
void main()
scanf("%d",&k);
high=9, low=0;初始值不應忘記 while (high>=low),條件為 “” = if (k!=a[m])
else}
-
二分查詢也稱為摺疊半字搜尋;
這個想法是。 恩!
例如,在 0,1,2,3,4,5,6,7,8 中找到 5,取陣列的一半,即將地面 5 4 與 5 進行比較,如果為 4>5(即中間的數字大於你要找的數字,則取該數字前面的部分); 如果是4<5(即中間的數字比你要找的數字小,那麼在數字後面取部分); 依此類推;
對不起,我沒有學好這門語言,表達不清楚。
-
int bsearch(elemtype a,elemtype x,int low,int high)
在陣列 a 中,該陣列在下乙個會話中為低值,在上限中為高值,資料元素 x* 位於兩半
-
遞迴實現,建構函式。 C++程式,試一試:
#include
using namespace std;
int search(int ,int,int,int);
int main()
int left=0;
int right=sizeof(word)/sizeof(int)-1;計算陣列長度未正確寫入。
int result;
key = 9;
result=search(word,left,right,key);
cout<<"要找到的數字有乙個序號:"
-
在 中執行。
一:(指出了三者中沒有注意到的一些問題):
#include
using namespace std;
int main(void)
其實如果用10個數字來查詢,引數n是完全沒有必要的“**二:”:
#include
using namespace std;
int main(void)
**三:》:
如果你想在你輸入的元素中找到乙個數字(即你輸入的元素數量不是固定的),你可以新增乙個引數 n 並使用它來傳遞陣列中的元素數。
#include
using namespace std;
int main(void)
-
int binsearch(int r[10],int k,10) 這 10 肯定是錯的 去掉它,一般作為模板,應該新增乙個引數 int n 來指示陣列的大小。
我測試了這個程式,沒錯,你可以刪除 10 個。
此函式可以擴充套件到任何大小的陣列的二進位查詢。
-
我今天剛做到了!
#include
using namespace std;
int binsearch(int r[10],int k)return -1;當低>高時,表示搜尋間隔為空,搜尋失敗。
/binseareh
int main()
cout<<"請輸入查詢次數:"<>k;
m=binsearch( r, k);
if(m==-1) cout<<"該號碼不存在"
-
檔案末尾有乙個結束符號,以及檔案的寫入方式,vi 有時會在末尾自動新增換行符。
你看的時候是不是也看了,然後n又加了一點。
閱讀文件後,將清楚地看到列印了多少 n。
-
**這樣寫,讓人看。
陰鬱和悲傷 心平氣和心 巴巴搶劫 百感交集 喜怒哀樂 藍海藍天 不緊不慢 屏住呼吸 憋住呼吸 悲喜交織 憂傷與憂愁交織 長夜春風 驕傲的茶公尺 無情的湯 紫海鱸魚 春暉寸草 鱸魚 洶湧澎湃的思緒 徘徊 缺乏慾望 寧靜 明志, 寧靜深遠 對明志無動於衷,寧靜深遠 腰背無休止地從眼中搶奪 鳳凰瘋龍 狂躁浪費 反而擔心胃 感恩 木頭 死灰 等著瞧,像箭一樣回心,像箭一樣回心 寒意 卓鶴怨 猿猴 驚慌 焦急 杵杵 心跳加速 長旱甘甜雨灑下恐慌 近家鄉 膽怯喝 柳柳垂花 今早 食物滿滿的抱怨,滿滿的春風,