버킷 정렬(bucket sort) 알고리즘의 개념
과정 설명
버킷 정렬(bucket sort) C++ 코드
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void bucket_sort(vector<float>& v) {
vector<vector<float>> bucket;
//데이터 n개가 주어졌을 때 데이터의 범위를 n개로 나누고 이에 해당하는 n개의 버킷을 만듬
bucket.assign(v.size(), vector<float>());
int max_v= *max_element(v.begin(), v.end());
//각각의 데이터를 해당하는 버킷에 집어 넣는다
for (int i = 0; i < v.size(); i++) {
int idx = v[i] * v.size() / (max_v + 1);
bucket[idx].push_back(v[i]);
}
int idx = 0;
for (auto& b : bucket) {
//버킷별로 정렬
sort(b.begin(), b.end());
//이를 전체적으로 합친다.
for (auto& e : b) {
v[idx] = e;
idx++;
}
}
}
int main()
{
vector<float> v = { 10.2345,230.403,10.2345,5403,3020,1023,300.20,300 };
bucket_sort(v);
for (auto& e : v) {
cout << e << endl;
}
return 0;
}