Skip to content

Commit 6d9f410

Browse files
Merge pull request #95 from ashx404/master
Bucket Sort for C++
2 parents f291b00 + db2ae33 commit 6d9f410

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
void bucketSort(float *array, int size)
7+
{
8+
vector<float> bucket[size];
9+
10+
//inserting elements into buckets such that
11+
// arr[i] will be at size*arr[i] location
12+
for (int i = 0; i < size; i++)
13+
{
14+
bucket[int(size * array[i])].push_back(array[i]);
15+
}
16+
//sorting individual buckets as each bucket can
17+
// have more than one element
18+
for (int i = 0; i < size; i++)
19+
{
20+
sort(bucket[i].begin(), bucket[i].end());
21+
}
22+
int index = 0;
23+
//inserting elements into the original array
24+
for (int i = 0; i < size; i++)
25+
{
26+
while (!bucket[i].empty())
27+
{
28+
array[index++] = *(bucket[i].begin());
29+
bucket[i].erase(bucket[i].begin());
30+
}
31+
}
32+
}
33+
int main()
34+
{
35+
float arr[] = {0.43, 0.36, 0.21, 0.41, 0.29, 0.58, 0.45, 0.97, 0.01, 0.65};
36+
int arr_size = sizeof(arr) / sizeof(arr[0]);
37+
bucketSort(arr, arr_size);
38+
39+
for (int i = 0; i < arr_size; i++)
40+
{
41+
cout << arr[i] << " ";
42+
}
43+
}

0 commit comments

Comments
 (0)