C++将一维数组从小到大进行排序
C++将数组从小到大进行排序发现思考应用发现1.先放段简单代码void swip(int data1, int data2) { int temp; temp = data1; data1 = data2; data2 = temp; } int main(){ int a=3;int b=4; swip(a,b); cout<<a<<","<<b<&..
·
发现
1.先放段简单代码
void swip(int data1, int data2)
{
int temp;
temp = data1;
data1 = data2;
data2 = temp;
}
int main()
{
int a=3;int b=4;
swip(a,b);
cout<<a<<","<<b<<endl;
return 0;
}
是要交换一下两个数据的位置。那么我们看一下运行结果3,4
并没有改变。
2.再放一段代码
void swip(int* data1, int* data2)
{
int temp;
temp = *data1;
*data1 = *data2;
*data2 = temp;
}
看一下运行结果,4,3
实现了我们想要的结果。
为什么会这样呢?
思考
1.在第一段代码中,data1和data2是已经定义好的形参,a和b是实参,函数只是改变了内部形参,并未影响到函数外部的实参,所以在主函数中打印a和b并未发生变化。
2.为什么第二段代码就有了变化?因为第二段代码使用了指针变量,直接获取了实参的地址,已经定义好的实参是无法改变的,除非你重新赋值。但是实参的地址是可以挪动的。所以第二段代码就是挪了一下两个实参的位置,进而实现了目的。
应用
已知一个数组,将其按照从小到大进行排列。
// 对输入数组进行排序
void arange(int* arr, int num)
{
for (int i = 0; i < num-1; i++)
{
if (arr[i] > arr[i + 1])
{
int temp;
temp = arr[i]; arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
int main()
{
int score[5] = { 80,75,90,74,60 };
int num = 5;
// 当在确定最大值后,将最大值置于最右侧,对剩下的进行再次排序。
for (int j = num; j >=1; j--)
{
arange(score, num);
}
for (int i = 0; i < num; i++)
{
cout << score[i] << " ";
}
return 0;
}
结果
60 74 75 80 90
更多推荐
已为社区贡献1条内容
所有评论(0)