代码自取:
运用了很基础的手法写,运行没错误
#include <iostream>
using namespace std;
int main() {
int arr[10]; int i = 0;
int length = sizeof(arr) / sizeof(arr[0]);
for( i=0;i<length;i++)
cin >> arr[i];
cout << "原数组等于:" << endl;
for (i = 0; i < length; i++)
cout << arr[i] << " ";
cout << endl;
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j + 1])
{
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
cout << "从小排列到大的数组等于:" << endl;
for (i = 0; i < length; i++)
cout << arr[i] << " ";
cout << endl;
int k; cin >> k;
int left=0; int right=length-1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] < k) {
left = mid + 1;//要后半部分
}
else if (arr[mid] > k) {
right = mid - 1;//要前半部分
}
else {
cout << "数组找到这个数了,下标是: " << mid;
break;
}
}
if (left > right) {
cout << "数组中找不到这个数";
}
return 0;
}