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

Быстрая сортировка (сортировка Хоара) для связных списков - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите переделать из двоичного дерева поиска, на бинарное идеально-сбалансированное дерево http://www.cyberforum.ru/cpp-beginners/thread1212179.html
У меня было такое задание: Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: - номер поезда; - станция назначения; - время отправления. Данные в системе организовать в виде бинарного идеально-сбалансированного дерева. Написать программу, которая: - обеспечивает первоначальный...
C++ Входные/выходные данные. Метод решения и результат работы #include <iostream> #include <cmath> using namespace std; int main() { char i; cin>>i; cout<<"Vvedite bukvu"<<endl; switch(i) http://www.cyberforum.ru/cpp-beginners/thread1212159.html
Исправить void sort() C++
Помогите исправить void sort() начало в 93 строке. ничего не записывает файл или как вообще можно отсортировать? Уже не знаю как сделать. #include <iostream> #include <conio.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <fstream>
приведение матрицы к итерационной форме C++
Здравствуйте. Подскажите, для чего нужен минус в формуле приведения недиагональных элементов матрицы к итерационному виду: C=-A/A;
C++ Составить и отладить программу редактор текстов http://www.cyberforum.ru/cpp-beginners/thread1212106.html
Составить и отладить программу редактор текстов со следующими обязательными операциями: - Вставка символа; - Перемещение / удаление / копирования блока; - Уничтожение символа; - Сохранение текущего файла. - Маркировка блока;
C++ Поиск в базе автомобилей по заданным параметрам есть решенная задача - поиск больных в базе по заданным параметрам #include "stdafx.h" #include "stdio.h" #include "windows.h" #include "string.h" char * r(const char * txt){ char s; подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
20.06.2014, 02:27     Быстрая сортировка (сортировка Хоара) для связных списков
Это и есть оперделение "быстрой сортировки"! Я же говорю о том, что, применяя её к спискам, для разбиения на две половины нужно не переставлять элементы местами, а создавать "как-бэ два новых списка" путём добавления в них элементов из оригинала и далее уже сортировать их.
Как-то так.
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
58
59
60
61
62
63
64
65
#include <iostream>
#include <cstdlib>
#include <ctime>
 
struct ListItem
{
    int key;
    ListItem *next;
};
ListItem* Key_Push_Front(ListItem* Start, int newKey)
{
    ListItem* tNew = new ListItem;
    tNew->key = newKey;
    tNew->next = Start;
    return tNew;
}
inline ListItem* Node_Push_Front(ListItem* Start, ListItem* newNode)
{
    newNode->next = Start;
    return newNode;
}
void Print_List(ListItem* MyList)
{
    for (ListItem* it = MyList; it != NULL; it = it->next)
        std::cout << (it->key) << " ";
    std::cout << std::endl;
}
ListItem* Q_sort(ListItem* data, ListItem** endptr)
{
    *endptr = data;
    if (!data)      return NULL;
    if (!data->next) return data;
    ListItem* Right=NULL;
    ListItem* Left=NULL;
    ListItem* it = data;
    ListItem* tmp;
    int med = data->key;
    while (it)
    {
        tmp = it->next;
        if (it->key < med) 
            Right = Node_Push_Front(Right, it);
        else 
            Left  = Node_Push_Front(Left,  it);
        it = tmp;
    }
    Right=Q_sort(Right, &it);
    if (!Right)
        Right = Q_sort(Left, endptr);
    else        
        it->next = Q_sort(Left, endptr);
    return Right;
}
int main()
{
    ListItem* MyList = NULL;
    ListItem* it;
    srand(time(NULL));
    for (int i = 0; i < 10; ++i)
        MyList = Key_Push_Front(MyList, rand()%100);
    Print_List(MyList);
    MyList = Q_sort(MyList, &it);
    Print_List(MyList);
    return 0;
}
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru