"계수정렬 구현"의 두 판 사이의 차이

33번째 줄: 33번째 줄:
import java.util.Arrays;
import java.util.Arrays;
public class MyClass {
public class MyClass {
    private static void count_sort(int arr[]) {
private static void count_sort(int arr[]) {
        int i, size=arr.length, max=arr[0];
int i, size=arr.length, max=arr[0];
        for(int e:arr) if(max<e)max=e;
for(int e:arr) if(max<e)max=e;
        int output[] = new int[size];
int output[] = new int[size];
        int count[] = new int[max+1];
int count[] = new int[max+1];
        for(i=0; i<size; i++) count[arr[i]]++;
for(i=0; i<size; i++) count[arr[i]]++;
        for(i=1; i<=max; i++) count[i] += count[i-1];
for(i=1; i<=max; i++) count[i] += count[i-1];
        for(i=0; i<size; i++) {
for(i=0; i<size; i++) {
            output[count[arr[i]]-1] = arr[i];
output[count[arr[i]]-1] = arr[i];
            count[arr[i]]--;
count[arr[i]]--;
        }
}
        for(i=0; i<size; i++) arr[i] = output[i];
for(i=0; i<size; i++) arr[i] = output[i];
    }
}
    public static void main(String args[]) {
public static void main(String args[]) {
        int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10};
int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10};
        count_sort(arr);
count_sort(arr);
        System.out.println( Arrays.toString(arr) );
System.out.println( Arrays.toString(arr) );
    }
}
}
}
</source>
</source>

2018년 7월 15일 (일) 23:08 판

1 C

#include <stdio.h>
#include <string.h>
void count_sort(int arr[], int size) {
    int i, max=arr[0];
    for(i=0; i<size; i++) if( arr[i]>max ) max=arr[i];
	int output[size], count[max+1];
	memset(count, 0, sizeof(count));
	for(i=0; i<size; i++) count[arr[i]]++;
	for(i=1; i<=max; i++) count[i] += count[i-1];
	for(i=0; i<size; i++) {
		output[count[arr[i]]-1] = arr[i];
		count[arr[i]]--;
	}
	for(i=0; i<size; i++) arr[i] = output[i];
}
int main() {
	int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10};
	int size = sizeof(arr)/sizeof(arr[0]);
	count_sort(arr, size);
	for(int i=0; i<size; i++) printf("%d ",arr[i]);
}

2 Java

import java.util.Arrays;
public class MyClass {
	private static void count_sort(int arr[]) {
		int i, size=arr.length, max=arr[0];
		for(int e:arr) if(max<e)max=e;
		int output[] = new int[size];
		int count[] = new int[max+1];
		for(i=0; i<size; i++) count[arr[i]]++;
		for(i=1; i<=max; i++) count[i] += count[i-1];
		for(i=0; i<size; i++) {
			output[count[arr[i]]-1] = arr[i];
			count[arr[i]]--;
		}
		for(i=0; i<size; i++) arr[i] = output[i];
	}
	public static void main(String args[]) {
		int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10};
		count_sort(arr);
		System.out.println( Arrays.toString(arr) );
	}
}

3 Python

def count_sort(arr):
	l = len(arr)
	m = max(arr)+1
	output = [0 for i in range(m)]
	count = [0 for i in range(m)]
	result = [0 for _ in arr]
	for i in arr:
		count[i] += 1
	for i in range(m):
		count[i] += count[i-1]
	for i in range(l):
		output[count[arr[i]]-1] = arr[i]
		count[arr[i]] -= 1
	for i in range(l):
		result[i] = output[i]
	return result 
arr = [3,4,2,1,7,5,8,9,0,6,100,10]
sorted = count_sort(arr)
print( sorted )
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]

4 같이 보기

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