"퀵정렬 구현"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 22개는 보이지 않습니다)
1번째 줄: 1번째 줄:
[[분류: 정렬]]
[[분류: 퀵정렬]]
==C==
==C==
[[분류: C]]
[[분류: C]]
<source lang='c'>
{{참고|C 퀵정렬 구현}}
<syntaxhighlight lang='c' run>
#include <stdio.h>
#include <stdio.h>
#define SIZE 10
void quick_sort(int a[], int L, int R) {
int arr[SIZE] = {3,4,2,1,7,5,8,9,0,6};
    int left, right, pivot=a[L];
void swap(int i, int j) {
    for(left=L,right=R; left<right; right--) {
int temp = arr[i];
        while( a[right]>=pivot && left<right ) right--;
arr[i] = arr[j];
        if( left<right ) a[left] = a[right];
arr[j] = temp;
        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 partition(int left, int right, int pivot) {
int main() {
int original_right = right;
int arr[] = {9,1,22,4,0,-1,1,22,100,10};
while(1) {
int size = sizeof(arr)/sizeof(int);
while( arr[++left] < pivot ) {}
quick_sort(arr, 0, size-1);
while( right>0 && arr[--right]>pivot ) {}
for(int i=0; i<size; i++) printf("%d ", arr[i]); // -1 0 1 1 4 9 10 22 22 100
if( left >= right ) break;
swap( left, right );
}
swap( left, original_right );
return left;
}
}
void quick_sort(int left, int right) {
</syntaxhighlight>
if(right-left <= 0) return;  
 
int partition_point = partition(left-1,right,arr[right]);
==C++==
quick_sort( left, partition_point-1 );
[[분류: C++]]
quick_sort( partition_point+1, right );
{{참고|C++ 퀵정렬 구현}}
<syntaxhighlight lang='cpp' run>
#include <iostream>
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 main() {
quick_sort(0,SIZE-1);
    int arr[] = {9,1,22,4,0,-1,1,22,100,10};
for(int i=0; i<SIZE; i++) printf("%d ",arr[i]);
    int size = sizeof(arr)/sizeof(int);
// 0 1 2 3 4 5 6 7 8 9  
    quick_sort(arr, 0, size-1);
    for(int x: arr) std::cout << x << " "; // -1 0 1 1 4 9 10 22 22 100
}
</syntaxhighlight>
 
==C#==
[[분류: csharp]]
{{참고|C샵 퀵정렬 구현}}
<syntaxhighlight lang='csharp' run>
using System;
class Program {
    static void quickSort(int[] a) {
        quickSort(a, 0, a.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);
    }
    static void Main() {
        int[] arr = {9,1,22,4,0,-1,1,22,100,10};
        quickSort(arr);
        Console.Write(string.Join(",",arr)); // -1,0,1,1,4,9,10,22,22,100
    }
}
</syntaxhighlight>
 
==Java==
[[분류: Java]]
{{참고|Java 퀵정렬 구현}}
<syntaxhighlight lang='java' run>
public class MyClass {
    static void quickSort(int[] a) {
        quickSort(a, 0, a.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
    }
}
</syntaxhighlight>
 
==PHP==
[[분류: PHP]]
{{참고|PHP 퀵정렬 구현}}
<syntaxhighlight lang='php' run>
function quick_sort(&$a, $L=0, $R=-1) {
    if($R==-1) $R=count($a)-1;
    $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);
}
}
</source>
$arr = [9,1,22,4,0,-1,1,22,100,10];
quick_sort( $arr );
echo implode(',',$arr); # -1,0,1,1,4,9,10,22,22,100
</syntaxhighlight>
 
==Python==
[[분류: Python]]
{{참고|Python 퀵정렬 구현}}
<syntaxhighlight lang='python' run>
def quick_sort(a, L=0, R=-1):
    if R==-1: R=len(a)-1
    pivot=a[L]
    left=L
    right=R
    while left<right:
        while a[right]>=pivot and left<right: right-=1
        if left<right: a[left]=a[right]
        while a[left]<=pivot and left<right: left+=1
        if left>=right: break
        a[right]=a[left]
        right-=1
    a[left]=pivot
    if left>L: quick_sort(a, L, left-1)
    if left<R: quick_sort(a, left+1, R)
arr = [9,1,22,4,0,-1,1,22,100,10]
quick_sort(arr)
print( arr ) # [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
</syntaxhighlight>
 
==Ruby==
[[분류:Ruby]]
{{참고|Ruby 퀵정렬 구현}}
<syntaxhighlight lang='ruby' run>
def quick_sort(a, l=0, r=-1)
    if r==-1; r=a.size-1; end
    pivot=a[l]
    left=l
    right=r
    while left<right
        while a[right]>=pivot and left<right; right-=1; end
        if left<right; a[left]=a[right]; end
        while a[left]<=pivot and left<right; left+=1; end
        if left>=right; break; end
        a[right]=a[left]
        right-=1
    end
    a[left]=pivot
    if left>l; quick_sort(a, l, left-1); end
    if left<r; quick_sort(a, left+1, r); end
end
arr = [9,1,22,4,0,-1,1,22,100,10]
quick_sort(arr)
print arr # [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
</syntaxhighlight>


==같이 보기==
==같이 보기==
* [[퀵정렬]]
* [[정렬 구현]]
* [[정렬 구현]]
* [[퀵정렬]]

2021년 9월 24일 (금) 23:33 기준 최신판

1 C[ | ]

#include <stdio.h>
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 = sizeof(arr)/sizeof(int);
	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>
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 = sizeof(arr)/sizeof(int);
    quick_sort(arr, 0, size-1);
    for(int x: arr) std::cout << x << " "; // -1 0 1 1 4 9 10 22 22 100 
}

3 C#[ | ]

using System;
class Program {
    static void quickSort(int[] a) {
        quickSort(a, 0, a.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);
    }
    static void Main() {
        int[] arr = {9,1,22,4,0,-1,1,22,100,10};
        quickSort(arr);
        Console.Write(string.Join(",",arr)); // -1,0,1,1,4,9,10,22,22,100
    }
}

4 Java[ | ]

public class MyClass {
    static void quickSort(int[] a) {
        quickSort(a, 0, a.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 
    }
}

5 PHP[ | ]

function quick_sort(&$a, $L=0, $R=-1) {
    if($R==-1) $R=count($a)-1;
    $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);
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
quick_sort( $arr );
echo implode(',',$arr); # -1,0,1,1,4,9,10,22,22,100

6 Python[ | ]

def quick_sort(a, L=0, R=-1):
    if R==-1: R=len(a)-1
    pivot=a[L]
    left=L
    right=R
    while left<right:
        while a[right]>=pivot and left<right: right-=1
        if left<right: a[left]=a[right]
        while a[left]<=pivot and left<right: left+=1
        if left>=right: break
        a[right]=a[left]
        right-=1
    a[left]=pivot
    if left>L: quick_sort(a, L, left-1)
    if left<R: quick_sort(a, left+1, R)
arr = [9,1,22,4,0,-1,1,22,100,10]
quick_sort(arr)
print( arr ) # [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

7 Ruby[ | ]

def quick_sort(a, l=0, r=-1)
    if r==-1; r=a.size-1; end
    pivot=a[l]
    left=l
    right=r
    while left<right
        while a[right]>=pivot and left<right; right-=1; end
        if left<right; a[left]=a[right]; end
        while a[left]<=pivot and left<right; left+=1; end
        if left>=right; break; end
        a[right]=a[left]
        right-=1
    end
    a[left]=pivot
    if left>l; quick_sort(a, l, left-1); end
    if left<r; quick_sort(a, left+1, r); end
end
arr = [9,1,22,4,0,-1,1,22,100,10]
quick_sort(arr)
print arr # [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

8 같이 보기[ | ]

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