求解C++题目:编写一个边输入数据边对数据进行插入排序的程序,求各位高手解答!

如题所述

第1个回答  2023-05-27
以下是一个C++程序,可以边输入数据边对数据进行插入排序:
#include <iostream>using namespace std;int main() { const int MAX_SIZE = 100; int arr[MAX_SIZE]; int n = 0; // 输入数据,以-1作为输入结束标志
while (n < MAX_SIZE) { int num;
cin >> num; if (num == -1) break;
arr[n++] = num; // 对已输入的数据进行插入排序
for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
} // 输出排序后的结果
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl; return 0;
}

程序使用一个数组来存储输入的数据,以-1作为输入结束标志。每输入一个新的数,就使用插入排序算法对已输入的数据进行排序。最后输出已排序的数据。
值得注意的是,这个程序实现了边输入数据边进行插入排序,但是这种方式并不是最优的,因为每输入一个新的数就要对整个已输入的数据进行排序,时间复杂度是O(n^2)。更好的方式是先将所有数据输入完毕后再进行一次排序,时间复杂度是O(nlogn)。

求解C++题目:编写一个边输入数据边对数据进行插入排序的程序,求各位...
cin >> num; if (num == -1) break;arr[n++] = num; \/\/ 对已输入的数据进行插入排序 for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j];j--;} arr[j + 1]...

c++实现对任意数目输入整数的升序、降序排序
void main(){ int *s,temp,i,n,num;cout<<"请输入排序数个数:";cin>>num;s=new int [num];cout<<"请输入"<<num<<"个数:"<<endl;\/\/---输入--- for(i=0;i<num;i++)cin>>s[i];\/\/---排序--- for(int a=0;a<num;a++)for(int b=a+1;b<num;b++)if(s[a]>...

C++:题目:“有一个已排好序的数组,今输入一个数,要求按原来排序的规律将...
for(i=0;i<10;i++){\/\/插入一个元素,组数长度增1 printf("%d",a);} printf("\\n");} 输入12,输出结果如下:总结:一组数组,直到找到大于或等于输入数的时候,找到插入数的下标,a[i+1]=a意思是将a的值给a[i+1],往后移一个(插入一个数,后面元素依次往后移动一个)方法二、includ...

怎么用c++编写一个输入输出整数的程序?
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if...

再问一道C++的题目。 如何对n个数据进行从小到大的排序?
下面是一个排序的例子,你自己看一下:include<stdio.h> void sort(int a[],int n){ int i;int j;int temp;for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(a[i]>a[j]){ temp = a[i];a[i] = a[j];a[j] = temp;} } } } int main(){ int a[8]={1,4,...

C语言插入数据生成有序序列
{ if(x>a[j]){ pos=j+1;break;} else { a[j+1]=a[j];} } a[pos]=x; \/\/在pos位置插入数据 c++; \/\/个数加1 } output(a,c);printf("\\n");system("PAUSE");return 0;} void output(int a[],int n){ int i;for(i=0;i<n;i++){ printf("%d ",a[i]);} } ...

求解一道C++程序设计的题目。。(职工信息管理系统)
小弟求诸位高人帮忙解决C++程序设计的问题:要求一个职工信息管理系统。系统功能如下:1,创建存储该单位职工信息的存储系统,在第一次输入基本信息时,创建文件将职工信息写入文件。... 小弟求诸位高人帮忙解决C++程序设计的问题: 要求一个职工信息管理系统。系统功能如下: 1,创建存储该单位职工信息的存储系统,在第一次...

c++编程求输入一个正整数(任意位数),倒序输出!
【解题思路】整数的逆序输出是很常见的题目,也比较简单。可以通过取余运算符(%)和除号(\/)来完成,具体的思路如下:比如要对123逆序输出。第一步是先对 123除以10取余数,这样就会得到3;第二步是把123除以10取整,得到12,然后再把3*10+12%10,得到32;第三步是把12除以10取整,得到1,然后再...

c++读入一些整数,对其进行从小到大的排序要求使用vector和sort函数...
using namespace std;int main(){ int x;vector<int> a;\/\/定义一个容器 while(cin>>x&&x!='e'){ a.push_back(x);\/\/变量x在容器a尾部入栈 } sort(a.begin(),a.end());\/\/排序 for(int i=0;i<a.size();i++)\/\/输出(a.size():读取容器a的元素个数)cout<<a[i]<<" ";...

数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
typedef strUCt node { char name[20];struct node *link;}stud;这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用来存储其直接后继的指针。定义好了链表的结构之后,只要在程序运行的时候爱数据域中存储适当的数据,如有后继结点,则把链域指向...

相似回答
大家正在搜