[Все сортировки]
Теория: Wikipedia + Кормен[п.8.4. Второе издание]
Практика: informatics.mccme.ru
Реализация:
- const int MAX_VALUE = 2000; // значения массива [0, MAX_VALUE]
- const int BUCKETS = 10; // количество карманов
- ...
- void bucket_sort(vector<int> &mas) {
- vector<list<int> > mem(BUCKETS);
- for (int i=0;i<mas.size();i++) {
- int pos = (mas[i] - 1) / (MAX_VALUE / BUCKETS);
- list<int>::iterator it = mem[pos].begin();
- while (it != mem[pos].end() && *it < mas[i])
- it++;
- mem[pos].insert(it,mas[i]);
- }
- int pos = 0;
- for (int i=0;i<BUCKETS;i++) {
- for(list<int>::iterator it = mem[i].begin();it!= mem[i].end();it++)
- {
- mas[pos++] = *it;
- }
- }
- }
* This source code was highlighted with Source Code Highlighter.
Комментариев нет:
Отправить комментарий