c++1. 将15个整数存放在一个数组中,对这15个整数按从小到大进行排序(排序方法自选),然后键盘输入一个整数,用二分查找法找出该数是数组中第几个元素,如果该数不在数组中,则输出“无此数”。 要求:数组直接在主程序中初始化。输出排序前和排序后的15个整数,以及查找后的结果。 2. 自定义一个函数实现排序功能,存储整数的数组作为函数的形式参数。 注意:数组下标是从0开始的,注意数组中第几个元素与数组下标的关系。
时间: 2024-03-07 19:48:13 浏览: 78
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序
5星 · 资源好评率100%
好的,我来回答你的问题。
以下是对第一个问题的解答:
```c++
#include <iostream>
using namespace std;
void sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int binarySearch(int arr[], int len, int target) {
int left = 0, right = len - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid + 1;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[15] = {12, 43, 7, 19, 21, 8, 36, 55, 4, 32, 51, 16, 27, 6, 48};
int len = sizeof(arr) / sizeof(arr[0]);
// 输出排序前的数组
cout << "排序前的数组:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
sort(arr, len); // 对数组进行排序
// 输出排序后的数组
cout << "排序后的数组:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
// 进行二分查找
int target;
cout << "请输入一个整数:";
cin >> target;
int res = binarySearch(arr, len, target);
if (res == -1) {
cout << "无此数" << endl;
} else {
cout << "该数是数组中第" << res << "个元素" << endl;
}
return 0;
}
```
输出结果如下:
```
排序前的数组:
12 43 7 19 21 8 36 55 4 32 51 16 27 6 48
排序后的数组:
4 6 7 8 12 16 19 21 27 32 36 43 48 51 55
请输入一个整数:21
该数是数组中第8个元素
```
以下是对第二个问题的解答:
```c++
#include <iostream>
using namespace std;
void sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int binarySearch(int arr[], int len, int target) {
int left = 0, right = len - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid + 1;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[15] = {12, 43, 7, 19, 21, 8, 36, 55, 4, 32, 51, 16, 27, 6, 48};
int len = sizeof(arr) / sizeof(arr[0]);
// 输出排序前的数组
cout << "排序前的数组:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
sort(arr, len); // 对数组进行排序
// 输出排序后的数组
cout << "排序后的数组:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
// 进行二分查找
int target;
cout << "请输入一个整数:";
cin >> target;
int res = binarySearch(arr, len, target);
if (res == -1) {
cout << "无此数" << endl;
} else {
cout << "该数是数组中第" << res << "个元素" << endl;
}
return 0;
}
```
输出结果与上一个程序相同。
阅读全文