컴퓨터공부/알고리즘

계수정렬(counting sort)

achivenKakao 2015. 7. 18. 02:15

// countingSort.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.

//


#include "stdafx.h"

#include <iostream>


using namespace std;


#define MAX 20


int array[] = { 5, 7, 3, 2, 7, 9, 1, 3, 8, 2 };


int sortret[MAX] = { 0, };


int countsort(int sortret[])

{

int count[MAX] = { 0, };

int arraysize = sizeof(array) / sizeof(array[0]);



for (int i = 0; i < arraysize; i++)

{

count[array[i]] += 1 ;

}


for (int i = 1; i < arraysize; i++)

{

count[i] = count[i] + count[i - 1];

}


int idx = 0;


for (int i = arraysize - 1; i >= 0; i--)

{

idx = count[array[i]];

sortret[idx] = array[i];

count[array[i]]--;

}


return arraysize;


}


int _tmain(int argc, _TCHAR* argv[])

{

int sortsize = 0;

sortsize = countsort(sortret);


// 1부터 사용한다!!

for (int i = 1; i < sortsize; i++)

{

cout << sortret[i] << ' ';

}


return 0;

}