Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ В начало двоичного файла целого типа дописать нечетные элементы этого файла https://www.cyberforum.ru/ cpp-beginners/ thread728523.html
В начало двоичного файла целого типа дописать нечетные элементы этого файла. как ето описать правильно и чтоби в началосписка делал? #include <iostream> #include <fstream> #include <stdlib.h> #include <time.h> using namespace std;
C++ gets(name) - не поддается
Всем привет! Друзья, подскажите пожалуйста, где я туплю? По моей логике - пока существует цикл - у меня программа должна запрашивать ввод и текста, и числа, а получается - один раз вводишь текст, и всё ... #include <iostream> #include <conio.h> #include <string.h> using namespace std; void main() {
C++ Составить функцию для решения системы линейных уравнений https://www.cyberforum.ru/ cpp-beginners/ thread728517.html
14. Составить функцию для решения системы линейных уравнений \sum_{1}^{n} {a}_{i}_{j} * {x}_{j} = {b}_{i} методом исключения неизвестных. int gauss (int n, double *a, double *b); Функция возвращает 0 при успешном выполнении и 1, если метод не работает. 1<=i<=n
C++ Не использую доп. элементов массива переставить элементы массива в обратном порядке https://www.cyberforum.ru/ cpp-beginners/ thread728515.html
Не использую доп. элементов массива переставить элементы массива в обратном порядке Вот что получилось (все нужно сделать с выводом и проверкой не меньше ли число нуля..) //--------------------------------------------------------------------------- #pragma hdrstop #include <conio.h> #include <stdio.h> #include <iostream.h> #pragma argsused
C++ Составить функцию для разложения заданного целого числа на простые множители
8. Составить функцию для разложения заданного целого числа на простые множители. Результатом функции должен быть массив, содержащий простые множители, и целое число - количество множителей. int simplefactor(int n, int *masfactor);
C++ цикл простых чисел https://www.cyberforum.ru/ cpp-beginners/ thread728503.html
Дана последовательность натуральных чисел длины n. Вычислить сумму тех из них, которые – простые числа.
C++ Исправить ошибку (два связных списка) https://www.cyberforum.ru/ cpp-beginners/ thread728501.html
нужно задать 2 связных списка вот два файла и библиотека первый с функцией ввода #include "header.h" element *enter() { element *first, *current; string c;
C++ перебор значений
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
C++ Условный оператор: поменять значения переменных так, чтобы выполнилось условие https://www.cyberforum.ru/ cpp-beginners/ thread728499.html
Даны вещественные x1, x2, x3, x4 . Поменять значения переменных так, чтобы \chi 1 \geq \chi 2; \chi 3 \geq \chi 4.
C++ Движение окружностей с изменением цвета https://www.cyberforum.ru/ cpp-beginners/ thread728497.html
Доброго времени суток! Есть олимпийские кольца и рамка для них. Все они движуться вниз по экрану. вот мой код: Classes.H #include <iostream.h> #include <math.h> #include <conio.h> #include <graphics.h>
C++ Составить функцию для сортировки (упорядочения) массива
19. Составить функцию для сортировки (упорядочения) массива mas из n элементов по возрастанию значений элементов: void sort (int n, int *mas);
C++ Составить функцию для вычисления числа сочетаний https://www.cyberforum.ru/ cpp-beginners/ thread728493.html
9. Составить функцию для вычисления числа сочетаний из n злементов по m (n и m - целые): Cnm = n! / ((n-m)! * m!) Результатом функции должно быть целое число, если Cnm < 32767 и булевское значение true, или вещественное число, если Cnm >=32767 и булевское значение false. Boolean binom (int n, int m, int *cnm, double *dcnm);
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.12.2012, 04:07 0

прочитать массив из файла и отсортировать его по возрастанию - C++ - Ответ 3842953

12.12.2012, 04:07. Показов 4705. Ответов 8
Метки (Все метки)

Ответ

Сейчас сравнил по времени алгоритмы на 100000 элементах с максимальным разбросом значений:
1) с set
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <fstream>
#include <algorithm>
#include <iterator>
#include <set>
 
 
int main()
{
    std::ifstream ifs("input.txt");
    std::ofstream o("output.txt");
    if(!ifs) return 1;
    std::multiset<int> s((std::istream_iterator<int>(ifs)), std::istream_iterator<int>());
    std::copy(s.begin(), s.end(), std::ostream_iterator<int> (o, " "));
}

2) с vector и std::sort
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <algorithm>
#include <iterator>
#include <vector>
 
int main()
{
    std::ifstream ifs("input.txt");
    std::ofstream o("output.txt");
    int x, tmp;
    if(!ifs) return 1;
    ifs >> x;
    std::vector<int> v(x);
    for (int i=0; i < x && ifs >> tmp; i++)
        v.push_back(tmp);
    std::sort(v.begin(), v.begin() + x);
    std::copy(v.begin(), v.begin() + x, std::ostream_iterator<int> (o, " "));
}

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
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
#include <fstream>
#include <algorithm>
using namespace std;
 
 
void quickSort(int *mas, int l, int r)
{
    int x = mas[l+(r-l)/2];
    int i = l;
    int j = r;
    while(i<=j)
    {
        while(mas[i]<x) i++;
        while(mas[j]>x) j--;
        if(i<=j)
        {
            swap(mas[i],mas[j]);
            i++;
            j--;
        }
    }
    if(i<r)
        quickSort(mas, i,r);
    if(l<j)
        quickSort(mas, l,j);
}
 
int main()
{
    int n;
    int *array;
 
    fstream f;
    f.open("input.txt", ios::in);
    f>>n;
    array = new int[n];
    for(int i = 0; i<n; i++)
    {
        f>>array[i];
    }
    f.close();
 
    quickSort(array, 0, n-1);
 
    f.open("output.txt",ios::out);
    for(int i =0; i<n; i++)
    {
        f<<array[i]<<" ";
    }
    f.close();
    delete []array;
 
    return 0;
}

по времени с std::set 0.2 секунды, с std::vector 0.12, с массивом 0.122 секунды

Вернуться к обсуждению:
прочитать массив из файла и отсортировать его по возрастанию C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2012, 04:07
Готовые ответы и решения:

Прочитать массив из файла, отсортировать по возрастанию чётные элементы
Записать в один файл массив, содержащий 20 случайных чисел от -10 до 10. Прочитать массив из файла,...

Прочитать из файла массив отсортировать его и записать в другой
Добрый вечер:) Уважаемые форумчане, помогите новичку. Задание: Прочитать из файла массив...

Прочитать из файла « File 1. dat » данные в массив символов, отсортировать данный массив по возрастанию и записать результат в « File 2. dat »
Напишите программы на Паскале! 1. Используя ввод с клавиатуры создать файл « File 1. dat » ,...

Прочитать из текстового файла слова, отсортировать буквы по возрастанию
Ребят не могу понять в чем ошибка..... Суть задачи: Нужно прочитать из текстового файла слова,...

8
12.12.2012, 04:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2012, 04:07
Помогаю со студенческими работами здесь

Прочитать матрицу из файла, отсортировать по возрастанию элементов строк и вывести
Записать в файл произвольную матрицу, прочитать полученный файл и вывести матрицу, отсортированную...

Прочитать из файла числа, отсортировать их по возрастанию, результат записать в другой файл
Прочитать из файла числа, отсортировать их по возрастанию, результат записать в другой файл.

Дан массив.Отсортировать его по возрастанию
Помогите решить эту задачку

Прочитать из файла массив, отсортировать, результат вывести на экран.
Разработать приложение, выполняющее следующие функции. Прочитать из файла массив строк символов....

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru