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

Проверьте, пожалуйста, правильность алгоритма Timsort для связанных списков! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файловой системой в консольном приложение без WinAPI, QT, BOOST и пр http://www.cyberforum.ru/cpp-beginners/thread773011.html
Ребят, кто подскажет, можно ли в консольном приложение работать с файловой системой на чистом языке С или С++ ? Тоесть получать список файлов в папке, создавать папки, удалять и тд. Причём всё это...
C++ простыми словами объяснте пожалуйста, в чем суть этого оператора: -> простыми словами объяснте пожалуйста, в чем суть этого оператора: -> http://www.cyberforum.ru/cpp-beginners/thread773007.html
C++ Запись дерева в файл
Помогите организовать запись дерева в файл. текст: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <conio.h> #include <string.h> #define VER 50 #define SIZE 20
C++ Как создать функцию
char podstorka(char str1,char str2,int m,char str3) { size_t pos=m; size_t len1=strlen(str1); size_t len2=strlen(str2); if(len1<pos) pos=len1; ...
C++ перевод из числа в прописной вид не массив http://www.cyberforum.ru/cpp-beginners/thread772966.html
Здравствуйте товарищи!Нужна ваша помощь в исправлении кода. Что нужно мне изменить в коде что бы при вводе числа например 1234.34 выводило одна тысяча двести тридцать четыре доллара тридцать четыре...
C++ Шаблонный класс, принимающий InputIterators в конструкторе Есть Stack.h #ifndef _STACK_H_ #define _STACK_H_ #include <cstddef> #include <iterator> template <class T> class Stack { public: подробнее

Показать сообщение отдельно
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130

Проверьте, пожалуйста, правильность алгоритма Timsort для связанных списков! - C++

27.01.2013, 19:36. Просмотров 387. Ответов 0
Метки (Все метки)

Имеет ли то что я написал что-то общее с Timsort ?
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
template <typename list_type>
list_type* MergeLists(list_type* list_1, list_type* list_2) {
    list_type *out_front, *out_curr;
    if(*list_1 < *list_2) out_front=list_1, list_1=list_1->next;
    else out_front=list_2, list_2=list_2->next;
    out_curr=out_front;
    while(list_1&&list_2) {
        if(*list_1 < *list_2) out_curr->next=list_1, list_1=list_1->next;
        else out_curr->next=list_2, list_2=list_2->next;
        out_curr=out_curr->next;
    }
    out_curr->next=list_1?list_1:list_2;
    return out_front;
}
 
template <typename node_type> void Timsort(node_type* &front) {
    if(front==0) throw exception(EX_LOC,EX_INCORRECT_ARGUMENT);
    node_type *curr(front), *prev(0), *buf;
    while(curr->next) {
        if(*curr < *curr->next) curr=curr->next;
        else {
            buf=curr->next, curr->next=0; curr=buf; // snip list
            if(prev) front=MergeLists(front, prev); // merge lists
            prev=curr;
        }
    }
    if(prev) front=MergeLists(front, prev);
}
оно то, конечно, работает но вот с скоростью работы я не уверен то ли получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru