빠른 정렬을 수정하여 다중 스레드로 만듭니다. 나는 그것이 작동하기를 기대했다. 원래 알고리즘이 작동하고 있었다. 파티셔닝 후 피벗의 왼쪽과 오른쪽으로의 재귀 호출에 대해 새 스레드를 생성 중입니다.mutithreaded 빠른 정렬이 예상대로 응답하지 않습니다.
public class QuickSort extends Thread{
private int[] arr;
private int left;
private int right;
public QuickSort(int[] arr){
this.arr= arr;
this.left=0;
this.right=arr.length -1;
this.start();
}
public QuickSort(int[] arr, int left , int right){
this.arr= arr;
this.left=left;
this.right=right;
this.start();
}
int partition(int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = arr[(left + right)/2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
return i;
}
void quickSort(int left, int right) {
int index = partition(left, right);
if (left < index - 1)
new QuickSort(arr, left , index -1);
if (index < right)
new QuickSort(arr ,index, right);
}
public void run(){
quickSort(left , right);
}
public static void main(String arg[])
{
int[] s = {100,99,98,97,96,95,94,93,92,91};
new QuickSort(s);
for(int i: s)
System.out.println(i);
}
}
"작동하지 않음"은 정확히 무엇을 의미합니까? 디버거에서 실행 했습니까? [faq] 및 [ask]를 읽고 SO에 게시하기위한 지침을 이해하십시오. 그냥 코드 묶음을 버리고 "작동하지 않습니다"라고 말하면 ... SO에서 작동하지 않습니다. –