我有一個全球性的整數指針數組,其中創建這樣整數指針數組排序用C
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'作爲循環條件。 – wildplasser
'size'和'sizeOfArray'具有相同的值嗎? – kajacx
@kajacx編號'size'爲16,'sizeOfArray'爲4.我的目標是用16個值對數組的4個第一個值進行排序。我將更新問題 – Avaruusmuikku