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

Сортировка большого одномерного массива - C++

Войти
Регистрация
Восстановить пароль
 
basic021
 Аватар для basic021
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 11
06.06.2014, 15:26     Сортировка большого одномерного массива #1
Вот что у меня получилось. Сортировка по возростанию массива со случайными элементами. Так работает нормально, но мне нужно чтобы массив был из 100 000 тыс чисел. если меняю 100 на 100 000 тыс то очень долго объявляет. Вопрос в том что можно ли быстро объявить или объявить но не выводить на экран. И так же отсортировать?
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
#include "stdafx.h"
#include<iostream> 
#include<cstdlib>
using namespace std; 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (0, "");
 
    const int arr = 100;       // меняю 100 на 100 000 тыс                                 
           int A[100];                  // меняю  100 на 100 000 тыс           
    int i = 0;
    int j = 0;
    int k = arr - 2;
    int tmp = 0;
    bool is_swap = false;
    for(int i = 0; i < sizeof(A) / sizeof(int); ++i)
    A[i] = 0+rand()%100; 
    cout<<"неотсортированный массив \n"<<endl;
    for(int i = 0; i < sizeof(A) / sizeof(int); ++i)
        cout << "mas["<<i<<"] "<<A[i] << endl; // если закоментировать эту строку, то не работает
            for (i = 0; i<=k; ++i)
    {
        is_swap = false;
        for (j = k; j>=i; --j)
        {
            if (A[j] > A[j+1])
            {
                tmp = A[j+1];
                A[j+1] = A[j];
                A[j] = tmp;
                is_swap = true;
            }
        }
        if (!is_swap) break; 
    }
            cout<<endl;
        cout<<"Отсортированный массив по возрастоанию \n"<<endl;
    for (i = 0; i<arr; ++i)
    {
        
        cout<<"mas["<<i<<"] "<<A[i]<<endl;
    }
        
        cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 15:26     Сортировка большого одномерного массива
Посмотрите здесь:

C++ Сортировка одномерного массива
Сортировка одномерного массива C++
C++ Сортировка одномерного массива С++
Сортировка одномерного массива C++
C++ Сортировка одномерного массива
сортировка одномерного массива C++
Сортировка одномерного массива C++
C++ Сортировка одномерного массива
Сортировка одномерного массива C++
Сортировка одномерного массива C++
Сортировка одномерного массива C++
Сортировка одномерного массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 265
06.06.2014, 15:40     Сортировка большого одномерного массива #2
Ваша программа работает за O(N^2), где N - количество элементов в массиве. Для того, чтобы массив сортировался быстро, вам надо использовать быструю сортировку. Например, есть встроенная сортировка в библиотеке <algorithm> sort. Если Вы хотите написать сами, то можете погуглить QSort.
azbest
 Аватар для azbest
39 / 39 / 8
Регистрация: 12.03.2013
Сообщений: 147
06.06.2014, 15:50     Сортировка большого одномерного массива #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <stdio.h>
#include <time.h>
 
#define DIAPAZONE 10000
 
using namespace std;
 
int main()
{
    vector <int> v;         // вектор (динамический масив) чисел
    int n=100000;           // количество элеементов
    srand(time(0));         // "включение" генератора)
    while (n--) {
        v.push_back(rand()%DIAPAZONE);  // добавляем случайное число
    }
    stable_sort(v.begin(),v.end());     // сортировка массива от начала до конца
    freopen("sorted.txt","w",stdout);   // изменяем поток вывода из консоли в файл
    for (n=0;n<v.size();++n) printf("%d\n",v[n]);   // записываем (у меня заняло 0,137 сек)
    return 0;
}
stable_sort() работает немного быстрее чем sort() если в массиве есть повторяющиеся элементы когда диапазон случайных чисел менше их количества например.
basic021
 Аватар для basic021
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 11
08.06.2014, 12:12  [ТС]     Сортировка большого одномерного массива #4
Всем спасибо, теперь понятно!
Yandex
Объявления
08.06.2014, 12:12     Сортировка большого одномерного массива
Ответ Создать тему
Опции темы

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