我想做一个任意一个double型或者int型的数组进行排列的函数。可是到了第一步函数定义就遇到问题了。请问怎么做这样的函数啊?
3条回答 默认 最新
- 技术专家团-小桥流水 2021-12-02 22:11关注
你所说的位置大小的数组,应该是在输入的时候不知道会从键盘输入多少个数吧,当输入完成的时候,输入了多少个数是能知道的。这时候你可以用冒泡排序,也可以用选择排序。
输入不定个数的数据,有多种方法,比如当输入回车符的时候结束输入,或者当输入-1的时候结束,这个根据具体情况来定。下面的例子是当输入回车符时结束输入。
运行结果:代码如下:
#include <iostream> using namespace std; //冒泡排序 void bubble_sort(int a[],int n); //选择排序,升序 void select_sort(int a[],int n); int main() { int *p; int n=0; int maxsize=1000; p = new int[maxsize]; //先申请maxsize个空间 while(1) { cin >> p[n]; n++; if(n==maxsize) { maxsize += 100;//在原来的基础上再额外申请100个空间 int *q = new int[maxsize]; //把原数组的元素复制到新数组中 for(int j=0;j<n;j++) q[j]=p[j]; //释放原来的空间 delete[] p; //让p指向新申请的空间 p = q; } if(cin.get() == '\n') //输入回车符结束输入 break; } //冒泡排序或者选择排序,都可以 bubble_sort(p,n); //select_sort(p,n); //输出排序后的数组 for(int i = 0;i<n;i++) cout << p[i] << " "; //释放空间 delete[] p; p = 0; return 0; } //冒泡排序 void bubble_sort(int a[],int n) { int i,j,t; for (i=0;i<n-1;i++) { for (j=0;j<n-1-i;j++) { if(a[j] > a[j+1]) //从小到大,升序 { t = a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } //选择排序,升序 void select_sort(int a[],int n) { int i,j; int minindex,tmp; for (i=0;i<n-1;i++) { minindex = i; //找出第i小的数所在的位置 for(j=i+1;j<n;j++) { if(a[j] < a[minindex]) minindex = j; } //将第i小的数放在第i个位置 if (i != minindex) { tmp = a[i]; a[i] = a[minindex]; a[minindex] = tmp; } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP