手机
当前位置:查字典教程网 >编程开发 >C语言 >C++实现数组的排序/插入重新排序/以及逆置操作详解
C++实现数组的排序/插入重新排序/以及逆置操作详解
摘要:插入新的数字重新排序分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(a[i+1...

插入新的数字重新排序

分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(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;

}

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

将已经排好序的数组中的数据逆置:

分析:实现顺序的逆置,需要找到数组中的中间的数组,以该数字作为中间点,对应的两边的数字交换即可。

复制代码 代码如下:

#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>

【C++实现数组的排序/插入重新排序/以及逆置操作详解】相关文章:

c语言字符数组与字符串的使用详解

用c++实现将文本每个单词首字母转换为大写

C++之友元:友元函数和友元类详解

C++中一维数组与指针的关系详细总结

浅谈C++日志系统log4cxx的使用小结详解

利用ace的ACE_Task等类实现线程池的方法详解

深入第K大数问题以及算法概要的详解

深入C++拷贝构造函数的总结详解

深入遍历二叉树的各种操作详解(非递归遍历)

深入Main函数中的参数argc,argv的使用详解

精品推荐
分类导航