国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現數組的排序/插入重新排序/以及逆置操作詳解

2020-01-26 15:43:27
字體:
來源:轉載
供稿:網友

插入新的數字重新排序
分析:
將新的數字與已經排序好的數組中的數字一一比較,直到找到插入點,然后將插入點以后的數字都向后移動一個單位(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;
}

還有一種方法就是,在建立一個數組,直接在賦值過程中完成逆置,即:
復制代碼 代碼如下:

<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="<img src="http://files.VeVB.COm/file_images/article/201310/201310210857497.jpg" alt="" />"></DIV>
<PRE></PRE>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳县| 枣强县| 新昌县| 邵东县| 南华县| 龙胜| 宜兴市| 丹棱县| 合川市| 区。| 新绛县| 宁河县| 中山市| 仙桃市| 东乡族自治县| 县级市| 麻栗坡县| 象山县| 涟源市| 屯留县| 罗定市| 许昌市| 定襄县| 留坝县| 黄陵县| 庆云县| 光泽县| 泗洪县| 静乐县| 金阳县| 吴桥县| 思茅市| 北安市| 铜川市| 湘阴县| 蕉岭县| 临高县| 建德市| 伊吾县| 宁津县| 分宜县|