【함정】정렬 중 동작을 교환하는 함정
3064 단어 정렬
static void swap(int[] data, int i, int j) {
// ,data[i] data[j] 0
if (data[i] != data[j]) {
data[i] = data[i] ^ data[j];
data[j] = data[i] ^ data[j];
data[i] = data[i] ^ data[j];
}
}
static void sort(int[] data, int begin, int end) {
if (begin < end) {
int cur = data[begin];
int i = begin;
int j = end + 1;
while (true) {
while (i < end && cur >= data[++i])
;
while (j > begin && cur <= data[--j])
;
if (i < j) {
swap(data, i, j);
} else {
break;
}
}
swap(data, begin, j);
sort(data, begin, j - 1);
sort(data, j + 1, end);
}
}
public static void main(String[] args) {
int[] data = { 2, 1, 3, 8, 4, 9 };
sort(data, 0, 5);
System.out.println(Arrays.toString(data));
}
상술한 예에서 3^3의 상황이 발생하였는데, 마지막에 0을 얻어 순서가 잘못되었다.
이차 또는 연산으로 수조 원소를 교환할 때 연개 원소의 값이 같은지 비교하는 것을 기억해라.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Cognos 목록을 프롬프트에서 선택한 항목으로 오름차순 및 내림차순으로 정렬Cognos BI & Analytics에서 리스트의 정렬을 항목 지정 및 정렬 순서 지정으로 하고 싶을 때의 방법입니다. 정렬 항목 프롬프트에서 수량을 선택하고 정렬 순서 프롬프트에서 내림차순을 선택한 예입니다. 정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.