【发布时间】:2014-01-28 00:44:24
【问题描述】:
我有一个全局整数指针数组,就是这样创建的
int * array;
array = (int *) malloc(size * sizeof(int));
我还有一个排序算法,它应该对数组中大于 4 的前 4 个数字(在本例中为 16)进行排序。在这种情况下 sizeOfArray 被定义为 4:
int temp,i,j;
for(i=0;i<sizeOfArray;i++){
for(j=i;j<sizeOfArray;j++){
if(array[i] > array[j]){
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
由于某种原因,输出真的很奇怪:
Unsorted: 7,6,9,3
Sorted: 3,6,5,1
最奇怪的部分是,如果我更改算法以按降序对数字进行排序,它似乎可以工作:
if(array[i] < array[j])
Unsorted: 10,0,1,8
Sorted: 10,8,1,0
这是什么原因造成的?我完全迷路了。
【问题讨论】:
-
sizeof 不符合您的预期,您需要
size作为循环条件。 -
size和sizeOfArray是否具有相同的值? -
@kajacx No.
size是 16,sizeOfArray是 4。我的目标是用 16 个值对数组的 4 个第一个值进行排序。我会更新问题 -
你能发布复制问题的可编译代码吗?
-
在代码中放一个 printf() 就可以看到了。
标签: c arrays algorithm sorting