c++编写一个有序数组
时间: 2023-10-15 16:07:21 浏览: 125
以下是一个简单的有序数组的示例程序:
```
#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++++++++编写一个有序数组类,类定义为SortedArray,要求对两个任意长度的数组分别进行排序,之后再将这两个有序数组合并,代码中需要使用运算符的重载和索引
#include <iostream>
using namespace std;
class SortedArray
{
private:
int *arr;
int size;
public:
SortedArray(int *a, int n)
{
arr = new int[n];
size = n;
for(int i=0; i<n; i++)
{
arr[i] = a[i];
}
sort();
}
void sort()
{
for(int i=0; i<size-1; i++)
{
for(int j=i+1; j<size; j++)
{
if(arr[i]>arr[j])
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
SortedArray operator+(SortedArray &a)
{
int *newarr = new int[size+a.size];
int i=0, j=0, k=0;
while(i<size && j<a.size)
{
if(arr[i]<a.arr[j])
{
newarr[k++] = arr[i++];
}
else
{
newarr[k++] = a.arr[j++];
}
}
while(i<size)
{
newarr[k++] = arr[i++];
}
while(j<a.size)
{
newarr[k++] = a.arr[j++];
}
return SortedArray(newarr, size+a.size);
}
int operator[](int i)
{
return arr[i];
}
};
int main()
{
int a[] = {1, 3, 5, 7, 9};
int b[] = {2, 4, 6, 8, 10};
SortedArray A(a, 5);
SortedArray B(b, 5);
SortedArray C = A+B;
for(int i=0; i<10; i++)
{
cout<<C[i]<<" ";
}
cout<<endl;
return 0;
}
阅读全文