자바 퀵 정렬 질문입니다!
-
게시물 수정 , 삭제는 로그인 필요
public class QuickSort {
static int partition(int[] list, int left, int right){
int pivot, temp, low, high;
low = left;
high = right + 1;
pivot = list[left];
do{
do{
low++; //인덱스 범위를 넘어가는 에러
System.out.println(low);
}while(pivot > list[low]);
do{
high--;
}while(pivot < list[high]);
if(low < high){
temp = list[low];
list[low] = list[high];
list[high] = temp;
}
}while(low < high);
temp = list[left];
list[left] = list[high];
list[high] = temp;
return high;
}
static void quick_sort(int[] list, int left, int right){
if(left < right){
int q = partition(list, left, right);
quick_sort(list, left,q - 1);
quick_sort(list,q + 1, right);
}
}
public static void main(String[] args){
int[] list = {5,3,8,4,9,1,6,2,7};
quick_sort(list,0,list.length-1);
for(int i=0; i<list.length; i++){
System.out.print(list[i] + " ");
}
}
}
퀵 정렬 질문입니다!
C언어로 구현된 것을 보고 자바로 똑같이 구현을 해보았습니다. 근데 partition 메소드 안에 low++ 부분에서 배열의 크기는 0~8인데 low가 9가 되버려서 에러가 발생하는데 C에서는 돌아가는 코드인데 자바에서는 안되는데 어떤 걸 제가 잘 모르고 있는지 모르겠어서 질문드립니다 ㅜㅜ
자바와 C언어의 어떤 차이가 있어서 똑같이 하면 안되는 걸까요??
#자바 퀵정렬 #자바 퀵소트 라이브러리 #자바 퀵정렬 오름차순