程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++實現數組的排序/插入重新排序/以及逆置操作

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

編輯:C++入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved