c++编写一个有序数组
时间: 2023-10-15 14:07:21 浏览: 32
以下是一个简单的有序数组的示例程序:
```
#include <iostream>
using namespace std;
int main()
{
int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int len = sizeof(arr) / sizeof(arr[0]);
cout << "有序数组:";
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这个程序定义了一个有序数组,它包含了10个整数,从1到19,每个数之间相差2,也就是说这是一个等差数列。程序使用了一个for循环来遍历数组并输出其中的每个元素。输出结果如下:
```
有序数组:1 3 5 7 9 11 13 15 17 19
```
相关问题
用C++编写一个有序数组类,类定义为SortedArray,要求对两个任意长度的数组分别进行排序,之后再将这两个有序数组合并,用cin>>sa这种方式输入一个数组,分两行输入,第一行输入数组长度,第二行输入数组元素,中间用空格分隔
以下是我写的代码,使用了归并排序的思想来合并两个有序数组:
```c
#include <iostream>
#include <vector>
using namespace std;
class SortedArray {
private:
vector<int> arr;
// 归并排序合并两个有序数组的函数
vector<int> merge(vector<int>& a, vector<int>& b) {
int n = a.size(), m = b.size();
int i = 0, j = 0;
vector<int> res;
while (i < n && j < m) {
if (a[i] < b[j]) {
res.push_back(a[i++]);
} else {
res.push_back(b[j++]);
}
}
while (i < n) {
res.push_back(a[i++]);
}
while (j < m) {
res.push_back(b[j++]);
}
return res;
}
public:
SortedArray() {}
// 从 cin 中读入一个有序数组
friend istream& operator>>(istream& is, SortedArray& sa) {
int n;
is >> n;
sa.arr.resize(n);
for (int i = 0; i < n; ++i) {
is >> sa.arr[i];
}
return is;
}
// 对数组进行排序
void sort() {
std::sort(arr.begin(), arr.end());
}
// 合并两个有序数组
SortedArray merge(SortedArray& other) {
vector<int> a = arr, b = other.arr;
vector<int> res = merge(a, b);
SortedArray sa;
sa.arr = res;
return sa;
}
// 输出数组
friend ostream& operator<<(ostream& os, const SortedArray& sa) {
for (int x : sa.arr) {
os << x << " ";
}
return os;
}
};
int main() {
SortedArray a, b;
cin >> a >> b;
a.sort();
b.sort();
SortedArray c = a.merge(b);
cout << c << endl;
return 0;
}
```
使用示例:
输入:
```
5
1 3 5 7 9
4
2 4 6 8
```
输出:
```
1 2 3 4 5 6 7 8 9
```
用c++编写一个程序,实现对有序数组的折半查找算法。
好的,以下是用C++编写的实现有序数组折半查找算法的程序:
```c++
#include <iostream>
using namespace std;
int BinarySearch(int arr[], int left, int right, int target)
{
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target)
return mid;
if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1; // 返回-1表示查找失败
}
int main()
{
int arr[] = { 2, 3, 4, 5, 6, 7, 8, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = BinarySearch(arr, 0, n - 1, target);
if (result == -1)
cout << "目标元素未找到" << endl;
else
cout << "目标元素在索引 " << result << " 处" << endl;
return 0;
}
```
这个程序中,我们首先定义了一个`BinarySearch()`函数,它接受一个有序数组、数组左右边界以及要查找的目标元素。在函数中,我们使用了一个`while`循环来不断缩小我们要查找的范围,直到找到目标元素或查找失败。
我们在主函数中定义了一个有序数组、数组长度和要查找的目标元素,并且调用了`BinarySearch()`函数来进行查找。如果查找成功,我们输出目标元素的索引;否则输出“目标元素未找到”。
希望这个程序能够帮助你理解折半查找算法。