Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2014, 14:34   #1
looc-dogg
Пользователь
 
Регистрация: 06.01.2014
Сообщений: 20
По умолчанию Сортировка пузырьком на "Си"

Народ,условие такое произвести сортировку пузырьком считывая массив из файла (произвольных,допустим, чисел 20) и результат сортировки записывается в другой файл. Заранее спасибо!!
looc-dogg вне форума Ответить с цитированием
Старый 19.02.2014, 14:42   #2
PathTheir
Пользователь
 
Аватар для PathTheir
 
Регистрация: 14.04.2013
Сообщений: 62
По умолчанию

Код:
#include<stdio.h>
 #define N 1000 
 // N - количество чисел
 int main() {
    int i, j;
    int a[N]; 

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
 
    // считываем n чисел
    for(i = 0 ; i < N; i++) { 
        scanf("%d", &a[i]);
    }
    for(i = 0 ; i < N ; i++) { 
       // сравниваем два соседних элемента.
       for(j = 0 ; j < N - i - 1 ; j++) {  
           if(a[j] > a[j+1]) {           
              // если они идут в неправильном порядке, то  
              //  меняем их местами. 
              int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp; 
           }
        }
    }

    for (i = 0; i < N; i++)
        printf("%d ", a[i]);
 }
PathTheir вне форума Ответить с цитированием
Старый 19.02.2014, 14:47   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

UPD
Неактуально

Алгоритм:
Открыть файл
Считать в массив числа
Закрыть файл
Осуществить сортировку пузырьком
Открыть файл
Записать числа
Закрыть файл

Правда, особого смысла в такой задаче не вижу (к вопросу о том, что Вам нужно реализовать 3 сортировки; у нас нужно было сравнить производительность 2 сортировок - количество сравнений, обменов и общее время выполнения).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.02.2014, 15:06   #4
looc-dogg
Пользователь
 
Регистрация: 06.01.2014
Сообщений: 20
По умолчанию

Цитата:
Сообщение от PathTheir Посмотреть сообщение
Код:
#include<stdio.h>
 #define N 1000 
 // N - количество чисел
 int main() {
    int i, j;
    int a[N]; 

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
 
    // считываем n чисел
    for(i = 0 ; i < N; i++) { 
        scanf("%d", &a[i]);
    }
    for(i = 0 ; i < N ; i++) { 
       // сравниваем два соседних элемента.
       for(j = 0 ; j < N - i - 1 ; j++) {  
           if(a[j] > a[j+1]) {           
              // если они идут в неправильном порядке, то  
              //  меняем их местами. 
              int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp; 
           }
        }
    }

    for (i = 0; i < N; i++)
        printf("%d ", a[i]);
 }
Спасибо большое !!!
looc-dogg вне форума Ответить с цитированием
Старый 19.02.2014, 15:12   #5
looc-dogg
Пользователь
 
Регистрация: 06.01.2014
Сообщений: 20
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
UPD
Неактуально

Алгоритм:
Открыть файл
Считать в массив числа
Закрыть файл
Осуществить сортировку пузырьком
Открыть файл
Записать числа
Закрыть файл

Правда, особого смысла в такой задаче не вижу (к вопросу о том, что Вам нужно реализовать 3 сортировки; у нас нужно было сравнить производительность 2 сортировок - количество сравнений, обменов и общее время выполнения).
Кстати да мне как раз нужно сравнить 3 сортировки: пузырьком, быстрая и перемешиванием ,параметр сравнение хотя бы только время каждой сортировки (быстродействие).Ток условие чтение массива из файла и запись результата в другой файл, ток я понятия не имею как. А вы этим занимались?
looc-dogg вне форума Ответить с цитированием
Старый 19.02.2014, 15:16   #6
PathTheir
Пользователь
 
Аватар для PathTheir
 
Регистрация: 14.04.2013
Сообщений: 62
По умолчанию

looc-dogg, это базовые алгоритмы. Любой уважающий себя программист (и даже не уважающий) должен, просто обязан их знать.
PathTheir вне форума Ответить с цитированием
Старый 20.02.2014, 01:08   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Ну в той работе, что делал, половина кода на ассемблере (функции сравнения и перестановки, запрос тиков процессора). В общем, алгоритм такой:
1) Сначала пишете просто сортировку массива
2) Затем добавляете считывание массива из файла и запись результата в файл
3) Затем добавляете переменные для счетчиков сравнений и обменов, а сами операции в готовой реализации сортировки "заворачиваете" в функции-обертки, которые увеличивают счетчик и делают нужную работу (благодаря этим функциям, Вы не пропустите места увеличения счетчиков)

А время - просто запрашиваете (как именно запрашивать не подскажу) перед сортировкой и после сортировки, вычитаете из второго первое и выводите разницу.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04