퀵정렬 구현

Jmnote (토론 | 기여)님의 2018년 8월 26일 (일) 16:08 판 (→‎C)

1 C

#include <stdio.h>
#define ARRAYSIZE(A) sizeof(A)/sizeof((A)[0])
void quick_sort(int a[], int L, int R) {
    int left, right, pivot=a[L];
    for(left=L,right=R; left<right; right--) {
        while( a[right]>=pivot && left<right ) right--;
        if( left<right ) a[left] = a[right];
        while( a[left]<=pivot && left<right ) left++;
        if( left>=right ) break;
        a[right] = a[left];
    }
    a[left]=pivot;
    if(left>L) quick_sort(a, L, left-1);
    if(left<R) quick_sort(a, left+1, R);
}
int main() {
	int arr[] = {9,1,22,4,0,-1,1,22,100,10};
	int size = ARRAYSIZE(arr);
	quick_sort(arr, 0, size-1);
	for(int i=0; i<size; i++) printf("%d ", arr[i]);
	// -1 0 1 1 4 9 10 22 22 100 
}

2 C++

#include <iostream>
#define ARRAYSIZE(A) sizeof(A)/sizeof((A)[0])
using namespace std;
void quick_sort(int a[], int L, int R) {
    int left, right, pivot=a[L];
    for(left=L,right=R; left<right; right--) {
        while( a[right]>=pivot && left<right ) right--;
        if( left<right ) a[left] = a[right];
        while( a[left]<=pivot && left<right ) left++;
        if( left>=right ) break;
        a[right] = a[left];
    }
    a[left]=pivot;
    if(left>L) quick_sort(a, L, left-1);
    if(left<R) quick_sort(a, left+1, R);
}
int main() {
    int arr[] = {9,1,22,4,0,-1,1,22,100,10};
    int size = ARRAYSIZE(arr);
    quick_sort(arr, 0, size-1);
    for(int i=0; i<size; i++) cout << arr[i] << " ";
    // -1 0 1 1 4 9 10 22 22 100 
}

3 Java

public class MyClass {
    static void quickSort(int arr[]) {
        quickSort(arr, 0, arr.length-1);
    }
    static void quickSort(int a[], int L, int R) {
        int left, right, pivot=a[L];
        for(left=L,right=R; left<right; right--) {
            while( a[right]>=pivot && left<right ) right--;
            if( left<right ) a[left] = a[right];
            while( a[left]<=pivot && left<right ) left++;
            if( left>=right ) break;
            a[right] = a[left];
        }
        a[left]=pivot;
        if(left>L) quickSort(a, L, left-1);
        if(left<R) quickSort(a, left+1, R);
    }
    public static void main(String[] args) {
        int[] arr = {9,1,22,4,0,-1,1,22,100,10};
        quickSort(arr);
        for(int x:arr) System.out.format( "%d ", x );
        // -1 0 1 1 4 9 10 22 22 100 
    }
}

4 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}