#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
不变。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句