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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка по основанию системы счисления http://www.cyberforum.ru/cpp-beginners/thread78110.html
Сортировка по основанию системы счисления. Метод предполагает выделение отдельного элемента памяти для каждой цифры, а затем группировку чисел по цифрам в каждом последовательном проходе.
C++ Сортировка просмотром выбранного места Сортировка просмотром выбранного места. Организуют просмотр элементов массива, начиная с первого до (М-1)-го. Каждый выбранный элемент сравнивают со всеми следующими и, если какой-то из следующих меньше выбранного, то меняют местами, процесс сравнения продолжают. http://www.cyberforum.ru/cpp-beginners/thread78109.html
C++ Преобразование типов
Ситуация примерно такая: struct Shipment{ public: Shipment(); Shipment(const std::vector<QString>&); }; class Tablewrapper_row{ public:
C++ Вывод слова, содержащего мин и макс количество символов
Помогите пожалуста!:help: У меня должен быть зачет по ОП, нужно выполнить простенькое задание на обычном С (не ++), а я с языком Си вобще незнаком, в основном на на Делфи все делал раньше.:scratch: В общем задание следующее: Нужно вывести слово, содержащее максимальное и минимальное количество символов, строку пользователь вводит с клавиатуры. Выполняется через c=getchar(). Еще хотелось бы чтоб...
C++ на ваше рассмотрение http://www.cyberforum.ru/cpp-beginners/thread78074.html
СПАСИТЕ НАРОД, осталось очень мало времени ,а я нифига не понимаю 1.Найти сумму элементов геометрической прогрессии с указанными номерами.Для прогрессиии задаеться первый элемент и ее знаменатель.Нахождение элемента прогрессии с указанным номером реализовать в виде функции, которая должна возвращать знасение о том, может ли быть найден такой элемент. 2.Вычислить все числа Фибоначчи до...
C++ Система счислений составить программу для перевода чисел из одной системы счисления в другую подробнее

Показать сообщение отдельно
Furioness
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 4
10.02.2015, 21:51     Сортировка методом квадратичной выборки
Долго я долбался с этой хренью, и когда она всё-таки заработала, на радостях, решил поделиться, ибо нигде кода не нашёл.
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;
}
 
Текущее время: 07:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru