不改变数组的值对数组进行排序
2016-11-26 15:22
113 查看
对数组进行排序时,如何能够做到不改变数组本来的值,而对数组元素进行排序呢?
其实很简单,可以运用指针数组来进行操作,即利用指针数组保存原数组各元素的地址,再对指针数组进行排序操作。期间没有改变指针数组指向地址的值(即原数组的个元素的值),只是对指针数组的地址进行排序操作。
算法实现:
#include<iostream>
using namespace std;
#include<time.h>
#define n 6
int main()
{
int a
={0};
//为简便对数组进行初始化,可利用生成随机数的方法进行初始化
time_ ts;
srand((unsigned int)time(&ts)); //设置随机数种子
for(int i=0;i<n;i++)
{
a[i]=rand()%100+1; //a[i]取值范围0-100
cout<<a[i]<<" ";
}
cout<<endl;
//功能实现
int *p
; //定义指针数组
//对指针数组的元素进行初始化
for(int i=0;i<n;i++)
{
p[i]=&a[i];
}
//冒泡排序
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(*p[j]>*p[j+1])
{
int *t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
for(int i=0;i<n;i++)
{
cout<<*p[i]<<" ";
}
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
其实很简单,可以运用指针数组来进行操作,即利用指针数组保存原数组各元素的地址,再对指针数组进行排序操作。期间没有改变指针数组指向地址的值(即原数组的个元素的值),只是对指针数组的地址进行排序操作。
算法实现:
#include<iostream>
using namespace std;
#include<time.h>
#define n 6
int main()
{
int a
={0};
//为简便对数组进行初始化,可利用生成随机数的方法进行初始化
time_ ts;
srand((unsigned int)time(&ts)); //设置随机数种子
for(int i=0;i<n;i++)
{
a[i]=rand()%100+1; //a[i]取值范围0-100
cout<<a[i]<<" ";
}
cout<<endl;
//功能实现
int *p
; //定义指针数组
//对指针数组的元素进行初始化
for(int i=0;i<n;i++)
{
p[i]=&a[i];
}
//冒泡排序
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(*p[j]>*p[j+1])
{
int *t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
for(int i=0;i<n;i++)
{
cout<<*p[i]<<" ";
}
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
相关文章推荐
- 两个数组[n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。
- 两个数组 [n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。
- 对字符串数组进行排序,在冒泡法排序中使用compareTo()方法确定排序的顺序。
- 冒泡法对数组进行排序
- 一道面试题:对一个数组进行排序,要求第一个最大、第二
- 对多个数组或多维数组进行排序
- C#.NET 对HashTable数组进行按值排序
- 挑战30天C++入门极限-C/C++中利用数组名/指针进行排序实例
- 在数组中插入数字,并从小到大进行排序(初学小记)
- 对数组里的元素进行排序
- 一个数组中有n种符号,对该数组进行排序
- PHP下对数组进行排序的函数
- PHP - Manual手册 - V. Array 数组函数 - array_multisort对多个数组或多维数组进行排序
- 对一个数组进行排序,这个数组可以是整型、浮点型
- 对一个大型数组进行排序,求平均,中间数等操作,第一次写这么长代码,累~
- 利用集合进行数组的排序
- 数组操作,将数组排序,然后按最大-最小-第二大-第二小。。。。进行
- 通过指针变量用选择法对数组中的10个整数按从大到小进行排序
- .NET :如何对数组进行排序
- PHP下对数组进行排序的函数