クラスのバイナリ検索について学習しています。下のコードは単なる例です。それで、このコードはコンパイルされていますが、出力を表示していないと言います。バイナリ検索の知識が不足しているため、なぜ出力がないのか分かりません。誰かが本当によく書かれたチュートリアルの方向を指してくれるのですか?または、コードの何が間違っているかを示すのに役立ちます。バイナリ検索 - コードをコンパイルして実行した後に出力が表示されない
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <vector>
#include <algorithm>
using namespace std;
int SIZE = 10;
int main()
{
int thisArray[] = { 99,86,44,55,78,63,0,32,11 };
int num = 0;
int n = 0;
int first;
int last;
int middle;
first = 0;
last = n - 1;
middle = (first + last)/2;
cout << "Enter the total number of elements\n";
cin >> n;
cout << "Entered " << n << "number.\n";
for (int i = 0; i < n; i++) {
cin >> thisArray[i];
}
cout << "Enter a number to find.\n";
cin >> num;
while (first <= last) {
if (thisArray[middle] < num) {
first = middle + 1;
}
else if (thisArray[middle] == num) {
cout << num << " found at location " << middle + 1 << "\n";
break;
}
else {
last = middle - 1;
}
middle = (first + last)/2;
}
return 0;
}
編集:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <vector>
#include <algorithm>
using namespace std;
int SIZE = 10;
int main()
{
//this is my binary search
int thisArray[10] = { 0,11,32,44,55,63,78,86,99 };
int i = 0; //index of the array
int n = 0; //variable of number that will be looked for
int first = 0;
int last = SIZE - 1;
int middle;
int pos = -1;
bool found = false;
int count = 0;
while (found) {
cout << "Enter a number to look for.\n";
cin >> n;
while (first <= last) {
middle = first + last/2;
if (thisArray[middle] == n) {
pos = middle;
cout << "item found at " << middle + 1 << "\n";
exit(0);
}
else if (thisArray[middle] > n) {
last = middle - 1;
}
else {
first = middle + 1;
}//endif
}//end while
}//end big while
//if()
return 0;
}
私はそれを得ました。誰も助けてくれてありがとう!
コードをステップ実行してデバッガでどのように動作するかを確認すると役に立ちます。バイナリ検索のためにソートされた配列が必要ですが、それはおそらく問題でしょうか? –
あなたの入力と予想される出力を投稿してください。バイナリ検索は* sorted *配列、BTWに対してのみ機能します。 – MFisherKDX
退職した忍者さん、ありがとうございます。私はすぐにそれを並べ替えます。 – Arturo