Форум программистов, компьютерный форум CyberForum.ru

Сортировка методом квадратичной выборки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
Родионова
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 13
22.12.2009, 15:50     Сортировка методом квадратичной выборки #1
Сортировка методом квадратичной выборки. Массив, состоящий из М элементов, разбивают на SQRT(M) групп по SQRT(M) элементов в каждой. В результате сплошного просмотра в каждой группе находят и заносят в рабочие переменные элементы с наименьшими значениями. Затем просматривают переменные и переменную с наименьшим значением заносят в выходной массив. После этого осуществляют поиск наименьшего элемента в той группе, из переменной которой элемент был перенесен в выходной массив. Процесс повторяют. При каждом занесении элемента в переменную ее стирают в основном массиве.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2009, 15:50     Сортировка методом квадратичной выборки
Посмотрите здесь:

Сортировка методом Шелла C++
C++ Сортировка методом выбора
C++ Упорядочить элементы столбцов матрицы методом простой выборки
C++ сортировка методом выбора
C++ Блок-схема квадратичной выборки
C++ Сортировка методом Синглтона
C++ Сортировка методом выбора и методом пузырьков
Сортировка массива пузырьковым методом и методом вставки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Furioness
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 4
10.02.2015, 21:51     Сортировка методом квадратичной выборки #2
Долго я долбался с этой хренью, и когда она всё-таки заработала, на радостях, решил поделиться, ибо нигде кода не нашёл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
vector<int> TetragonSort(vector<int> arr)
{
    int min=0, i, j, k;
    vector<int> additList, resultList;
 
    int nGroups = sqrt(arr.size());
    if (nGroups*nGroups < arr.size( ))
        nGroups++;
 
    additList.assign(nGroups, INT_MAX); //заполняем nGroups ячеек значением INT_MAX (ВРОДЕ должно работать даже если в начальном массиве будет значение INT_MAX)
 
    //заполнение первичными значениями дополнительнгго списсска
    for (i = nGroups*min; i < arr.size( ); i += nGroups)
    {
        min = i; //индекс минимального
        for (j = i + 1; j < i + nGroups && j < arr.size( ); j++)
        {
            if (arr[j] < arr[min])
                min = j;
        }
        //добавление эл-а в доп. список и заполние эл-а в осн.
        additList[i / nGroups] = arr[min];
        arr[min] = INT_MAX;
    }
 
    //основной цикл
    while (true)
    {
        //формирование результата------------
        min = 0;  //индекс минимального
        for (k = 1; k < additList.size(); k++)
        {
            if (additList[k] < additList[min])
                min = k;
        }
        resultList.push_back(additList[min]); 
        //------------------------------------
 
        if (resultList.size() == arr.size()) //точка выхода
            break;
 
        //основная работа
        i = nGroups*min;  //начальная точка просмотра
        min = i; //индекс минимального
        for (j = i + 1; j < i + nGroups && j < arr.size(); j++)
        {
            if (arr[j] < arr[min])
                min = j;
        }
        //добавление эл-а в доп. список и заполние эл-а в осн.
        additList[i / nGroups] = arr[min];
        arr[min] = INT_MAX;
    }
 
 
    return resultList;
}
Yandex
Объявления
10.02.2015, 21:51     Сортировка методом квадратичной выборки
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru