C++实现数组的排序/插入重新排序/以及逆置操作
2024-08-29 13:22:46
插入新的数字重新排序
分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(a[i+1]=a[i]),然后将数据插入即可。
代码:
#include<iostream>
using namespace std;
int main(){
int a[12];//定义用于存储数字的数组
int n;//输入的新的数字
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"please input a new one:";
cin>>n;
for(i=1;i<=10;i++){
if(a[i]>n){
k=n;
for(j=10;j>=i;j--){
a[j+1]=a[j];
}
a[i]=n;
break;
}
}
cout<<"new sorting order:"<<endl;
for(i=1;i<=11;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}
将已经排好序的数组中的数据逆置:
分析:实现顺序的逆置,需要找到数组中的中间的数组,以该数字作为中间点,对应的两边的数字交换即可。
#include<iostream>
using namespace std;
int main(){
int a[11];//定义用于存储数字的数组
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"Reverse order:"<<endl;
i=10;
for(j=1;j<=(i/2);j++){
a[0]=a[j];
a[j]=a[i+1-j];
a[i+1-j]=a[0];
}
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}
还有一种方法就是,在建立一个数组,直接在赋值过程中完成逆置,即:
#include<iostream>
using namespace std;
int main(){
int a[11];//定义用于存储数字的数组int b[11];
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"Reverse order:"<<endl;
i=10;
for(j=1;j<=i;j++){b[j]=a[i+1-j];
}
for(i=1;i<=10;i++){
cout<<b[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}该方法与上面的方法相比,数据的计算步骤减少了,但是增加了系统空间的开销
最新文章
- Android数据加密之Rsa加密
- ectouch 常用功能
- sublime-text3 3059基本配置
- 装个蒜。学习下dispatch queue
- RDLC系列之一 简单示例
- web简单连接html文件测试
- Microsoft SqlServer2008技术内幕:T-Sql语言基础-读书笔记1
- HTML5简略介绍
- Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子
- android Camera 数据流程分析
- C# IO操作(一)Path类的常用方法
- 使用dom4j生成xml字符串,以及解析xml字符串
- html中opacity的使用
- 几个常用道的macro
- Node.js和PHP运行机制对比
- post与get,这两人到底神马区别??
- linux设置环境变量
- createThread和_beginthreadex区别
- 关于SqlServer远程跨库修改数据
- java 将一个ip地址分割成一个数组
热门文章
- Python压缩脚本编辑
- uva11078 - Open Credit System(动态维护关键值)
- 做什么职业,也别做程序员,尤其是Java程序员
- Unity 5 官方打包管理工具 Asset Bundle Manager
- 学习动态性能表(19)--v$undostat
- 纯JS实现房贷利率报表对比
- CF 19E Fairy——树上差分
- 多版本python管理miniconda(集成了virtualenv和pip功能)
- Spring 与 @Resource注解
- Spring Boot 集成Swagger2生成RESTful API文档