C++實現(xiàn)數(shù)組的排序/插入重新排序/以及逆置操作詳解
更新時間:2013年10月21日 09:06:07 作者:
將新的數(shù)字與已經(jīng)排序好的數(shù)組中的數(shù)字一一比較,直到找到插入點,然后將插入點以后的數(shù)字都向后移動一個單位(a[i+1]=a[i]),然后將數(shù)據(jù)插入即可
插入新的數(shù)字重新排序
分析:將新的數(shù)字與已經(jīng)排序好的數(shù)組中的數(shù)字一一比較,直到找到插入點,然后將插入點以后的數(shù)字都向后移動一個單位(a[i+1]=a[i]),然后將數(shù)據(jù)插入即可。
代碼:
復制代碼 代碼如下:
#include<iostream>
using namespace std;
int main(){
int a[12];//定義用于存儲數(shù)字的數(shù)組
int n;//輸入的新的數(shù)字
int i=0,j=0,k=0;//排序用到的變量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //輸入數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
cout<<endl;
return 0;
}

將已經(jīng)排好序的數(shù)組中的數(shù)據(jù)逆置:
分析:實現(xiàn)順序的逆置,需要找到數(shù)組中的中間的數(shù)組,以該數(shù)字作為中間點,對應的兩邊的數(shù)字交換即可。
#include<iostream>
using namespace std;
int main(){
int a[11];//定義用于存儲數(shù)字的數(shù)組
int i=0,j=0,k=0;//排序用到的變量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //輸入數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
cout<<endl;
return 0;
}
還有一種方法就是,在建立一個數(shù)組,直接在賦值過程中完成逆置,即:
<PRE class=cpp name="code">#include<iostream>
using namespace std;
int main(){
int a[11];//定義用于存儲數(shù)字的數(shù)組 </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];
} //輸入數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
cout<<endl;
return 0;
}
</PRE><BR>
該方法與上面的方法相比,數(shù)據(jù)的計算步驟減少了,但是增加了系統(tǒng)空間的開銷
<DIV><IMG alt="" src="<img src="http://img.jbzj.com/file_images/article/201310/201310210857497.jpg" alt="" />"></DIV>
<PRE></PRE>
復制代碼 代碼如下:
#include<iostream>
using namespace std;
int main(){
int a[11];//定義用于存儲數(shù)字的數(shù)組
int i=0,j=0,k=0;//排序用到的變量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //輸入數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
cout<<endl;
return 0;
}
還有一種方法就是,在建立一個數(shù)組,直接在賦值過程中完成逆置,即:
復制代碼 代碼如下:
<PRE class=cpp name="code">#include<iostream>
using namespace std;
int main(){
int a[11];//定義用于存儲數(shù)字的數(shù)組 </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];
} //輸入數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
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]<<" ";
} //輸出數(shù)據(jù)
cout<<endl;
return 0;
}
</PRE><BR>
該方法與上面的方法相比,數(shù)據(jù)的計算步驟減少了,但是增加了系統(tǒng)空間的開銷
<DIV><IMG alt="" src="<img src="http://img.jbzj.com/file_images/article/201310/201310210857497.jpg" alt="" />"></DIV>
<PRE></PRE>
相關文章
C/C++利用棧和隊列實現(xiàn)停車場管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設計一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見棧和隊列的的停車場管理程序,需要的小伙伴可以參考一下2022-06-06linux內(nèi)核select/poll,epoll實現(xiàn)與區(qū)別
這篇文章主要介紹了linux內(nèi)核select/poll,epoll實現(xiàn)與區(qū)別,需要的朋友可以參考下2016-11-11