2016-09-04 9 views
-1

qsortを使用して整数の配列をソートしています。しかし、qsortは配列に何も変更を加えていません。qsortは整数配列を変更しません

int mycomp(const void *a, const void *b){ 
int *a1 = (int*)a; 
int *b1 = (int*)b; 

if (a1 < b1) 
    return -1; 
else if (a1 == b1) 
    return 0; 
else 
    return 1; 
} 

配列は含まれています:次のように私の比較関数がある

pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35}; 

そして私はとのqsortと呼ばれる:出力はまったく同じ配列である

qsort(pos, M, sizeof(int), mycomp); 

。誰でも助けてくれますか?

+5

あなたは、 'C++'と 'C++ 14'などをこのタグ付き、なぜあなたはC++プログラムでのqsortを使用していますか? ** C++プログラムでqsortを使用しない** - 代わりに 'std :: sort'を使います。それは簡単です。 'std :: sort(std :: begin(pos)、std :: end(pos));' – PaulMcKenzie

+1

このような問題を解決する適切なツールはデバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –

答えて

4

ポインタの値を比較します。

修正:

int a1 = *(int*)a; 
int b1 = *(int*)b; 
関連する問題