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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
basic021
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 11
#1

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

06.06.2014, 15:26. Просмотров 341. Ответов 3
Метки нет (Все метки)

Вот что у меня получилось. Сортировка по возростанию массива со случайными элементами. Так работает нормально, но мне нужно чтобы массив был из 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++
Всем доброго времени суток! Имеется одномерный массив A(N), состоящий из 0, 1 или 2. Переставить элементы массива так, чтобы сначала...

Сортировка одномерного массива С++ - C++
Доброго времени суток, Возникла дичайшая проблема с задачкой для начинающих ламеров. Эпилог: в школе программирования не было как...

Сортировка одномерного массива - C++
Написать программу сортировки массива методом:Камнем, сортировка Шелла, пирамильная сортировка, сортировка слиянием. (массив из случайных...

Сортировка одномерного массива - C++
Люди!!!! Помогите студенту сдать гак. Надо упорядочить одномерный массив из вешественных элементов. Если подкините код, который нано...

Сортировка одномерного массива - C++
Дан одномерный массив А, состоящий из N элементов. Отсортировать все его элементы а) улучшенным методом пузырька; б) методом прямого...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
06.06.2014, 15:40     Сортировка большого одномерного массива #2
Ваша программа работает за O(N^2), где N - количество элементов в массиве. Для того, чтобы массив сортировался быстро, вам надо использовать быструю сортировку. Например, есть встроенная сортировка в библиотеке <algorithm> sort. Если Вы хотите написать сами, то можете погуглить QSort.
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
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() если в массиве есть повторяющиеся элементы когда диапазон случайных чисел менше их количества например.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2014, 12:12     Сортировка большого одномерного массива
Еще ссылки по теме:

Сортировка одномерного массива - C++
Где ошибка? Нужно отсортировать элементы массива таким образом, чтобы сначала были размещены все положительные элементы, а затем все...

Сортировка одномерного массива - C++
Изначально у нас двумерный массив. Его мы &quot;превращаем&quot; в одномерный. Дальше его нужно отсортировать по определенному закону: &gt;-10 и &lt;10;...

Сортировка одномерного массива - C++
#include&lt;iostream.h&gt; #include &lt;time.h&gt; int main () { const int n=23; int T,i,m,k,temp; srand((unsigned)time(NULL));...

Сортировка одномерного массива - C++
задание отсортировать элементы массива, находящиеся слева от найденной позиции по убыванию, а элементы массива, находящиеся справа от...

Сортировка одномерного массива - C++
Здравствуйте пользователи! Написал программу &quot;Сортировка одномерного массива&quot;. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using...

Сортировка одномерного массива - C++
объясните пожалуйста алгоритм выполнения сортировки относительно компьютера(программы)


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

Или воспользуйтесь поиском по форуму:
basic021
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 11
08.06.2014, 12:12  [ТС]     Сортировка большого одномерного массива #4
Всем спасибо, теперь понятно!
Yandex
Объявления
08.06.2014, 12:12     Сортировка большого одномерного массива
Ответ Создать тему
Опции темы

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