插入新的数字重新排序
分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(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; }
该方法与上面的方法相比,数据的计算步骤减少了,但是增加了系统空间的开销