A의 값으로 정렬 된 A [크기]에 대한 인덱스가 포함되어야하는 목록 int A [크기] 및 목록 maxA [크기]가 있습니다. 기본적으로 A [maxA [ 0]]는 A에서 가장 큰 int의 요소 여야하고 maxA [0]는 인덱스 여야합니다. 여기 qsort를 사용하여 다른 목록을 기준으로 목록 정렬
내 비교 함수 :int compareA(const void *a,const void *b){
return A[*(TYPE *)b] - A[*(TYPE *)a];
}
그리고
qsort(maxA,SIZE_L,sizeof(int),compareA);
으로 호출 I 랜덤 possitive 번호에 의해 요소의 값을 증가시키고 루프 때 A [i]를 > L (L은 엔딩리스트로 정의되며 임의적입니다.) :
A[maxA[i]] = INT_MIN;
그것 얼마 후에 그것은 작동을 멈 춥니 다. 다음은 출력입니다.
INDEX VALUE
1 320
2 207
8 -437
3 -681
4 -960
6 -1638
5 -2928
9 -7395
7 -19272
0 -2147483648
Removed: 1
6 -1560 500
5 -2684 1000
9 -7140 1066
7 -18396 1168
1 -2147483648
0 -2147483648
2 276
3 0
8 -418
4 -864
왜이 임의의 동작이 발생합니까?
코드를 설명하는 대신 ("목록이 있습니다 ..."), [최소, 완전하며 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 만들어 보여주십시오. –
전문 용어에주의하십시오. 두 개의 배열이 있습니다. 목록에는 "링크 된 목록"이라는 의미가 있으며 이는 매우 다릅니다. –
'qsort_r()'을 찾아 보길 원할 수도 있지만, 비표준이며 다른 플랫폼은 같은 이름에 대해 (완전히 호환되지 않는) 인터페이스를 구현합니다. –