有 10 个地区的面积,要求对它们按由小到大的顺序排列。定义 一个长度为 10 的指针数组,该数组中的指针指向每一个地区面积元素,通过冒 泡法排序调整指针数组中每个元素的值,但原 10 个地区的值不变,通过输出指 针数组所指向的内存空间的值完成排序
指针不变没啥问题,进行内容交换即可。你说的每个元素的值,是指面积值吧
//冒泡排序
void bubbleArr(int *arr[],int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (*arr[j] > *arr[j + 1])
{
int temp = *arr[j];
*arr[j] = *arr[j + 1];
*arr[j + 1] = temp;
}
}
}
}
int main()
{
int **p = new int*[10];
int i;
for(i=0; i<10; i++)
{
p[i] = new int;
scanf("%d",p[i]);
}
bubbleArr(p,10);
for(i=0; i<10; i++)
{
printf("%d ",*p[i]);
}
return 0;
}
如果是地址不能变,那么更改排序函数即可
//冒泡排序
void bubbleArr(int *arr[],int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (*arr[j] > *arr[j + 1])
{
int *p = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = p;
}
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632