gpt4 book ai didi

c - C 中的指针数组排序有意外的输出

转载 作者:行者123 更新时间:2023-12-01 21:48:51 24 4
gpt4 key购买 nike

#include <stdio.h>

void sort(int *ptr, int n) {
int i,j,tmp;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (ptr[i] < ptr[j])
{
tmp=ptr[i];
ptr[i]=ptr[j];
ptr[j]=tmp;
}
}
int main() {
int i,n;
int *ptr;
printf("Nr. of elements : 5 \n");
n=5;

ptr=(int*)malloc( n * sizeof(int));
for (i=0;i<n;i++) {
scanf("%d",&ptr[i]);
}

printf("Initial array is : ");
for (i=0;i<n;i++) {
printf("%d ",ptr[i]);
}

sort(ptr,n);

printf("Sorted array is : ");
for (i=0;i<n;i++) {
printf("%d ",ptr[i]);
}
return 0;
}

这是我的代码。我正在尝试使用函数对指针数组进行排序。无论 (int) 输入是什么,它都能很好地解决问题。我的困惑是我正在使用 ptr[i] < ptr[j]代替 ptr[i] > ptr[j]因为它通常应该按升序排序。这是为什么?

最佳答案

不,你的困惑是错误的。看for循环,以及i之间的关系和 j .有时i < j和时间 i > j ,那么什么构成“故障”并需要交换?

内部循环应该从 i+1 开始不在“0”;这将使i之间的关系和 j不变。

关于c - C 中的指针数组排序有意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com