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

Поиск самой быстрой сортировки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск в тексте http://www.cyberforum.ru/cpp-beginners/thread153525.html
Помогите пожалуйста В файле имеется текст. Найти отсутствие пробелов после точки в конце предложения, исправить ошибки и сохранить файл. Предложением считать часть текста, что кончается "." или начинается с нового рядка
C++ bool в параметрах функции можно ли использовать тип bool в параметрах функции? void draw(char ch, int width, bool vline, bool hline ); или лучше использовать что-то другое? http://www.cyberforum.ru/cpp-beginners/thread153503.html
Невозможно найти или открыть файл pdb C++
я написал по учебнику прогу //Первая программа на C++ #include "stdafx.h" #include <iostream> int main () { std::cout << "Добро пожаловать в С++!\n"; return 0; }
шаблон функции C++
Здрасти. Как правильно написать шаблон ,например, этой функции? int **newmatrix(int row, int col){ int **matrix=new int*; for (int i=0; i<row; ++i) matrix=new int; return matrix; } я сделал так:
C++ Паттерны http://www.cyberforum.ru/cpp-beginners/thread153443.html
Пролистал всю главную страницу и решил поставить вопрос в С++ , чем сможите помогите. Суть , изучаю объектно ориентированное проектирование , есть открытые вопросы , куда писать?:)
C++ Простой список в виде массива.Как работать с элементами списка-массива через единую функцию Добрый день!Подсобите,как реализовать Простой список,но не через шаблоны или создание указателей,а как бы в виде массива.(Ну,или ваш вариант через указатели или шаблоны). Кто-то наверно подумает,что опять изобретают велосипед=) Сама проблема кроется в том,что нужно организовать просмотр элементов списка и каких либо действий над ним через единую общую функцию( void Visit(void (*pf)(Item &) ... подробнее

Показать сообщение отдельно
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
19.07.2010, 17:10
Sich_Taras, вот самая быстрая что у меня получалась
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
66
67
68
69
70
71
72
#include "stdafx.h"
using namespace System;
const int Q = 30;
void QuickAndInsertSort(array<int>^);
void insertSort(int*, int, int);
void recQuickAndInsertSort(int*, int, int);
void QuickAndInsertSort(array<int>^ arr)
{
    if (arr->Length < Q)
    {
        pin_ptr<int> ptr = &arr[0];
        insertSort(ptr, 0, arr->Length - 1);
    }
    else
    {
        pin_ptr<int> ptr = &arr[0];
        recQuickAndInsertSort(ptr, 0, arr->Length - 1);
    }
}
void insertSort(int* arr, int first, int last)
{
    int j;
    int index;
    for (int i = first; i < last + 1; i++)
    {
        index = arr[i];
        j = i;
        while ((j > 0) && (arr[j - 1] > index))
        {
            arr[j] = arr[j - 1];
            j = j - 1;
        }
        arr[j] = index;
    }
}
void recQuickAndInsertSort(int* arr, int first, int last)
{
    int p = arr[((last - first) >> 1) + first];
    int temp;
    int i = first, j = last;
    while (i <= j)
    {
        while (arr[i] < p && i <= last) i++;
        while (arr[j] > p && j >= first) j--;
        if (i <= j)
        {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
    if (j - first - Q > 0) recQuickAndInsertSort(arr, first, j);
    else if (j - first > 0) insertSort(arr, first, j);
    if (i - last + Q < 0) recQuickAndInsertSort(arr, i, last);
    else if (i - last < 0)insertSort(arr, i, last);
}
int main()
{
    auto r = gcnew Random(DateTime::Now.Millisecond);
    auto msv = gcnew array<int>(10000000);
    for each (auto% i in msv)
    {
        i = r->Next(int::MinValue, int::MaxValue);
    }
    auto t = DateTime::Now;
    QuickAndInsertSort(msv);
    Console::WriteLine(DateTime::Now - t);
    Console::ReadLine();
    return 0;
}
Рекурсивная быстрая + вставками на малых массивах, под .NET, c использованием управляемых массивов в куче и доступом к элементам через указатель
10^7 элементов от int::MinValue до int::MaxValue в среднем 1.4 секунды
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru