插入新的數字重新排序
分析:將新的數字與已經排序好的數組中的數字一一比較,直到找到插入點,然後將插入點以後的數字都向後移動一個單位(a[i+1]=a[i]),然後將數據插入即可。
代碼:
[cpp]
#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[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;
}
將已經排好序的數組中的數據逆置:
分析:實現順序的逆置,需要找到數組中的中間的數組,以該數字作為中間點,對應的兩邊的數字交換即可。
[cpp]
#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 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;
}
還有一種方法就是,在建立一個數組,直接在賦值過程中完成逆置,即:
[cpp]
PRE class=cpp name="code">#include<iostream>
using namespace std;
int main(){
int a[11];//定義用於存儲數字的數組 </PRE><PRE class=cpp name="code"> 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++){</PRE><PRE class=cpp name="code"> b[j]=a[i+1-j];
}
for(i=1;i<=10;i++){
cout<<b[i]<<" ";
} //輸出數據
cout<<endl;
return 0;
}
</PRE><BR>
該方法與上面的方法相比,數據的計算步驟減少了,但是增加了系統空間的開銷
<DIV><IMG alt="" src="http://img.blog.csdn.net/20130704134434750?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUWlhblNob3VZdVpoaUJv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"></DIV>
<PRE></PRE>