类实现一维数组正负数交换
来源:互联网 发布:python安装requests库 编辑:程序博客网 时间:2024/06/05 08:07
/*对于一个有正数和负数的数组,将其中所有小于0 的元素放到所有大于 0的元素的前面。使用的算法是:从左右两个方向扫描数组,从左向右找到大于等于0的元素,从右向左找到小于0的元素,将两者交换。依此类推,直到扫描完为止。试建立一个类ARR,完成上述工作。具体要求如下: (1) 私有数据成员。 int n:数组实际元素个数。 int a[100]:初始时存放原始数组,最终存放交换后的数组。 (2) 公有成员函数。 ARR(int x[ ], int size):构造函数,用参数size初始化n,用x数组初始化a数组。 void change( ):使用以上算法,完成调换数组元素的工作。 void show( ):输出a数组的值。 (3) 在 主 函 数 中 完 成 对 该 类 的 测 试 。 定 义 一 个 整 型 数 组 int b[10] , 其 初 值 是 {1,-3,-1,3,2,4,-4,5,-5,-2},定义一个ARR类的对象v,用b数组及其元素个数初始化该对象,先输出原始数组的值,然后交换数组元素的值,最后输出交换后的结果。 程序运行结果应为: 1 -3 -1 3 2 4 -4 5 -5 -2 -2 -3 -1 -5 -4 4 2 5 3 1 */#include<iostream>using namespace std;class arr{private: int n; int a[10];public: arr(int x[], int size); void change(); void show();};arr::arr(int x[], int size){ n = size; for (int i = 0; i < n; i++) { a[i] = x[i]; }}void arr::change(){ //此段语句可以从头到尾检索并交换,有“负负得正”的意思,数组经历两次交换。 int i = 0, j = n - 1; while (i<n&&j>=0) { while (a[i] < 0) i++; while (a[j] > 0) j--; int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; } //对数组进行首尾交换,注意k的范围,否则会进行两遍交换导致无法显示结果 for (int k = 0; k < n/2; k++) { int temp; temp = a[k]; a[k] = a[n - 1 - k]; a[n - 1 - k] = temp; }}void arr::show(){ for (int i = 0; i < n; i++) { cout << a[i] << '\t'; } cout << endl;}int main(){ int x[] = { 1,-3,-1,3,2,4,-4,5,-5,-2 }; arr arr1(x, 10); arr1.show(); arr1.change(); arr1.show(); system("pause"); return 0;}
阅读全文
0 0
- 类实现一维数组正负数交换
- 类实现一维数组正负数交换
- 一维数组交换
- Java实现-交错正负数
- 将数组中的正负数就地归类
- 汇编一日一学(10)--正负数组
- 汇编 实现正负数的冒泡排序
- C/C++实现正负数四舍五入
- 存在正负数数组的最大子数组和
- 不改变正负数相对顺序重新排列数组
- 不改变正负数相对顺序重新排列数组
- 不改变正负数之间相对顺序重新排列数组
- 不改变正负数之间相对顺序重新排列数组
- 汇编语言将正负数复制到不同的数组
- 两个数实现交换
- 统计正负数个数
- 正负数二进制计算
- 算法:区分正负数
- Bootstrap:表单和图片
- 28303 篇 arXiv 论文看深度学习 6 大趋势
- 虚拟机的linux和Windows建立共享文件
- 动态加载类并实例化对象
- C表白程序
- 类实现一维数组正负数交换
- window下安装python出现2503,2502的解决办法
- Drupal开发培训 Day5
- 通过对日志中UA进行统计分析用户大致的浏览器分布
- [Letecode 84] Largest Rectangle in Histogram
- 分布式架构的演进
- Linux的bg和fg命令简单介绍
- 无序数组找第k小的数
- Linux下开发JAVA程序