선택 정렬에 대한 코드를 따르고 더 큰 요소와 가장 작은 요소를 교환하려고하면 XOR 연산자를 사용하여 작동하지 않습니다. values 대신 0을 표시합니다. 그러나 스왑은 두 개의 정수를 처리하고 있습니다. 왜요?선택 정렬을 바꿀 수 없습니까?
import java.io.*;
class selection
{
public static void main(String s[])throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter n");
int n=Integer.parseInt(br.readLine());
System.out.println("Enter array");
int a[]=new int[n];
for(int i=0;i<n;++i) {
a[i]=Integer.parseInt(br.readLine());
}
int min;
System.out.println("Entered Array : ");
for(int i=0;i<n;++i)
System.out.print(a[i]+" ");
for(int i=0;i<n;++i) {
min=i;
for(int j=i+1;j<n;++j) {
if(a[min]>a[j])
min=j;
}
a[min]=a[min]^a[i];
a[i]=a[min]^a[i];
a[min]=a[min]^a[i];
}
System.out.println("\nSorted Array : ");
for(int i=0;i<n;++i) {
System.out.print(a[i]+" ");
}
}
}
출력은 다음과 같습니다 요소가 동일하고이 명시 적으로 대부분의 책에서 지적 된 경우 XOR와
Enter n
8
Enter array
1
5
4
6
2
8
9
7
Entered Array :
1 5 4 6 2 8 9 7
Sorted Array :
0 2 0 5 0 7 8 0
임시 값을 사용하는 것이 훨씬 간단합니다. –