程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++完成數組的排序/拔出從新排序/和逆置操作詳解

C++完成數組的排序/拔出從新排序/和逆置操作詳解

編輯:關於C++

C++完成數組的排序/拔出從新排序/和逆置操作詳解。本站提示廣大學習愛好者:(C++完成數組的排序/拔出從新排序/和逆置操作詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C++完成數組的排序/拔出從新排序/和逆置操作詳解正文


拔出新的數字從新排序
剖析:將新的數字與曾經排序好的數組中的數字逐個比擬,直到找到拔出點,然後將拔出點今後的數字都向後挪動一個單元(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.jb51.net/file_images/article/201310/201310210857497.jpg" alt="" />"></DIV>
<PRE></PRE>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved