게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
6일 1코딩 연습(뻘글) 퀵정렬!
게시물ID : programmer_22590짧은주소 복사하기
작성자 : 궭뷁뛣뉅
추천 : 0
조회수 : 917회
댓글수 : 4개
등록시간 : 2018/09/01 16:08:20

정말 신기하게도 합병정렬 보단 이해하기가 쉬웠습니다.

뭔가 왼쪽, 오른쪽 따로 움직이는게 확실히 상상된다는 느낌이랄까 머리속에 그림도 그려지고

이거 역시 재귀를 쓰지않고 만들어보려 했는데 잘 안되네요. ㅠㅠ

재귀를 쓰지 않음으로써 오는 손해가 너무 큰듯하고 만들면 계속 스파게티화 되버려서....

시간은 합병정렬 보다 빠르긴 한데 때때로 삽입정렬보다 느릴때가 있어서 당황스럽습니다.

이론상으로는 합병정렬과 퀵정렬의 정렬시간이 거의 비슷해야 할텐데 말이죠.


public  int[] quickSort(int[] array) {
long startTime = System.nanoTime();
Quick_Sort(array, 0 , array.length - 1);
long endTime = System.nanoTime();
System.out.println("QuickSort TIME : " + (endTime - startTime) / 1000.0 + "(ms)");
return array;
}

private  int[] Quick_Sort(int[] array, int start, int end) {
int part = partition(array, start, end);
if(start < part - 1) {
Quick_Sort(array, start, part - 1);
}
if(part < end) {
Quick_Sort(array, part, end);
}
return array;
}
private int partition(int[]array, int start, int end) {
int pivot = array[(start + end) / 2];
int temp;
while(start <= end) {
while(array[start] < pivot) start++;
while(pivot < array[end]) end--;
if(start <= end) {
temp = array[start];
array[start] = array[end];
array[end] = temp;
start++; end--;
}
}
return start;
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호