源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++实现数组的排序/插入重新排序/以及逆置操作详解

  • 时间:2021-03-21 01:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++实现数组的排序/插入重新排序/以及逆置操作详解
[b]插入新的数字重新排序 分析:[/b]将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(a[i+1]=a[i]),然后将数据插入即可。 [b]代码: [/b]
[u]复制代码[/u] 代码如下:
#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; }
[img]http://files.jb51.net/file_images/article/201310/201310210857486.jpg[/img] 将已经排好序的数组中的数据逆置:
分析:实现顺序的逆置,需要找到数组中的中间的数组,以该数字作为中间点,对应的两边的数字交换即可。
[u]复制代码[/u] 代码如下:
#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; }
还有一种方法就是,在建立一个数组,直接在赋值过程中完成逆置,即:
[u]复制代码[/u] 代码如下:
<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>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部