设计算法将整型数组A[n]中的元素调整为左右两部分,其中左边所有元素为奇数,右边所有元素为偶数。并要求算法的时间复杂度为O(n)。
涉及知识
顺序表
思路参考
https://blog.csdn.net/Drifter_Galaxy/article/details/107349644
代码
#include <iostream>
#define MAXSIZE 10
using namespace std;
class SqList {
public:
SqList(int m[]) {
for (int i = 0; i < MAXSIZE; i++) {
data[i] = m[i];
}
length = MAXSIZE;
}
int length;
int data[MAXSIZE];
};
int main() {
int num[] = { 1,2,3,4,5,6,7,8,9,10 };
SqList L1(num);
int num2[MAXSIZE];
SqList L2(num2);
int m = 0, n = MAXSIZE;
for (int i = 0; i < MAXSIZE; i++) {
if (L1.data[i] % 2 == 1) {
L2.data[m] = L1.data[i];
m++;
}
else {
L2.data[n-1] = L1.data[i];
n--;
}
}
for (int i = 0; i < MAXSIZE; i++) {
cout << L2.data[i] << ' ';
}
return 0;
}
学习笔记
一般来说对于类中的数组我们在主函数中不直接赋值,而是利用构造函数对类的数据成员进行初始化。
纯小白,代码比较幼稚,希望得到指正!