//java
public class Solution {
public int[] quickSort(int[] arr) {
sort(arr, 0, arr.length-1);
return arr;
}
private void sort(int[] arr, int left, int right){
if(left>=right) return;
int pivot=partition(arr,left, right);
sort(arr, left, pivot-1);
sort(arr, pivot, right);
}
private int partition(int[] arr, int start, int end){
int pivot=arr[(start+end)/2];
while(start<=end){
while(arr[start]<pivot) start++;
while(arr[end]>pivot) end--;
if(start<=end){
swap(arr, start, end);
start++;
end--;
}
}
return start;
}
private void swap(int[] arr, int start, int end){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
return;
}
}
//c++ quick sort
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int data[], int left, int right) {
int pivot = data[(left + right) / 2];
while (left <= right) {
while (data[left] < pivot) left++;
while (data[right] > pivot) right--;
if (left <= right) {
swap(data[left], data[right]);
left++; right--;
}
}
return left;
}
void quickSort(int data[], int left, int right)
{
if (left >= right) return;
int pivot = partition(data, left, right);
quickSort(data, left, pivot-1);
quickSort(data, pivot, right);
}
'Algorithm' 카테고리의 다른 글
Merge Sort (0) | 2022.10.11 |
---|---|
Radix Sort (0) | 2022.10.11 |
Insertion sort (1) | 2022.10.07 |
Bubble Sort (0) | 2022.10.06 |
[알고리즘] Base (0) | 2022.09.28 |