본문 바로가기
Algorithm

Quick Sort

by orioncsy 2022. 10. 6.
//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