Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
1 / 1 / 1
Регистрация: 08.10.2016
Сообщений: 28
1

Написать программу, в которой реализуются различные методы сортировки массивов

03.12.2016, 13:53. Показов 10647. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Да, тема сортировка массивов, но не всё так просто. Получил такое задание:
Написать программу, в которой реализуются различные методы сортировки (для одинаковых массивов случайных чисел в диапазоне от 0 до 100).
Сравнить реализованные методы по быстродействию. Провести исследование быстродействия для различного числа элементов в массиве (n=1000, 3000, 9000, 27000, 81000). Результаты исследования отразить в отчете в виде таблицы и графика зависимости (t/n) от n.
Каждый из методов сортировки, а также генерацию массива, необходимо реализовать в виде отдельной функции. Глобальных переменных не использовать!
Для оценки быстродействия можно использовать функцию clock() из библиотеки <time.h>, возвращающую число тактов процессора, прошедшее с момента запуска приложения. Возвращаемые значения функции clock() следует присваивать переменной типа unsigned long.
Виды сортировок:BubbleSort,HeapSort,Radix.

Я сделал всё для Bubble Sort и всё работает, но я неправильно создал массив, т.е. его нужно через функцию и глобальные переменные не использовать. Покажите как или объясните, пожалуйста.
Вот код:
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
#include <stdio.h>
#include <cstdlib> 
#include <iostream>
#include <iomanip>
#include <ctime>
#include <time.h>
using namespace std;
 
void bubbleSort(int *, int); // прототип функции сортировки пузырьком
 
int main(int argc, char* argv[])
{ 
system("mode con cols=150 lines=120"); 
system("pause » void"); 
    {  
    int t = clock();
    srand(time(NULL));
    cout << "Input 1001, 3001, 9001, 27001 or 81001, please:";
    int size_array;
    cin >> size_array;
 
    int *sorted_array = new int [size_array];
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 101; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    bubbleSort(sorted_array, size_array); // вызов функции сортировки пузырьком
 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << '\t';
    cout << "CPU cycles: " << t << "; Done parsing in " << ((float)t) / CLOCKS_PER_SEC << " seconds.";
    system("pause");
    return 0;
    }
}
 
void bubbleSort(int* arrayPtr, int length_array) // сортировка пузырьком
{
 int temp = 0; // временная переменная для хранения элемента массива
 bool exit = false; // болевая переменная для выхода из цикла, если массив отсортирован
 
 while (!exit) // пока массив не отсортирован
 {
  exit = true;
  for (int int_counter = 0; int_counter < (length_array - 1); int_counter++)
    if (arrayPtr[int_counter] > arrayPtr[int_counter + 1])
    {
     temp = arrayPtr[int_counter];
     arrayPtr[int_counter] = arrayPtr[int_counter + 1];
     arrayPtr[int_counter + 1] = temp;
     exit = false;
    }
 }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2016, 13:53
Ответы с готовыми решениями:

Реализовать программу, объединяющую простейшие методы сортировки массивов
Реализовать программу, объединяющую простейшие методы сортировки массивов: • сортировку обменом...

Разработать программу, которая сравнивает методы прямого включения и Шелла сортировки массивов
Задание: Хотел бы узнать как можно написать учебно-демонстрационную программу, которая сравнивает...

Разработать программу, которая сравнивает методы прямого включения и Шелла сортировки массивов
Задание: Разработать учебно-демонстрационную программу, которая сравнивает методы прямого...

Написать программу, в которой используются три метода сортировки
Написать программу, в которой используются три метода сортировки: Сортировка «пузырьком»....

2
74 / 71 / 67
Регистрация: 18.09.2015
Сообщений: 234
03.12.2016, 14:32 2
Глобальные переменные объявляются за пределами функции, у вас таких я не заметил.

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <ctime>
using namespace std;
 
void arrGen(int* arr, int N)
{ 
    for (int i = 0; i < N; i++)
        arr[i] = rand() % 101;
}
 
int main() 
{   
    int N = 5;
    int* arr = new int[N];
    
    arrGen(arr, N);
 
    for (int i = 0; i < N; i++)
        cout << arr[i] << " ";
 
}
самое банальное что можно было придумать)
0
1 / 1 / 1
Регистрация: 08.10.2016
Сообщений: 28
03.12.2016, 20:16  [ТС] 3
Спасибо. А как это отсортировать и вывести пусть без оценки быстродействия

Добавлено через 44 минуты
Цитата Сообщение от LoneProphet Посмотреть сообщение
Спасибо. А как это отсортировать и вывести пусть без оценки быстродействия
Сделал. Осталось разобраться с остальными сортировками
Вот код на будущее, для других:
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
#include <iostream>
#include <ctime>
#include <time.h>
#include <iomanip>
#include <stdio.h>
#include <cstdlib> 
using namespace std;
 
void bubbleSort(int *, int);
 
void arrGen(int* arr, int N)
{ 
    for (int i = 0; i < N; i++)
        arr[i] = rand() % 101;
}
 
int main() 
{   
    int t = clock();
    int N = 1001;
    int* arr = new int[N];
    
    arrGen(arr, N);
 
    for (int i = 0; i < N; i++)
        cout << arr[i] << " ";
cout << "\n\n";
 
bubbleSort(arr, N);
 
    for (int i = 0; i < N; i++)
    {
        cout << setw(1) << arr[i] << "  ";
    }
    cout << '\t';
cout << "\n\n";
    cout << "CPU cycles: " << t << "; Done parsing in " << ((float)t) / CLOCKS_PER_SEC << " seconds.";
    system("pause");
    return 0;
    }
    void bubbleSort(int* arr, int N)
{
 int temp = 0;
 bool exit = false;
 
 while (!exit)
 {
  exit = true;
  for (int i = 0; i < (N - 1); i++)
    if (arr[i] > arr[i + 1])
    {
     temp = arr[i];
     arr[i] = arr[i + 1];
     arr[i + 1] = temp;
     exit = false; 
    }
 }
}
1
03.12.2016, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2016, 20:16
Помогаю со студенческими работами здесь

Написать программу на языке С++, в которой алгоритм сортировки одномерного массива оформить в виде
Задание: Написать программу на языке С++, в которой алгоритм сортировки одномерного массива ...

Написать программу со стеком в которой должна быть возможность добавления, сортировки, удаления и поиска данных
Ну в общем написать программу со стеком в которой должна быть возможность добавления, сортировки,...

Методы сортировки массивов
Дан одномерный массив целых чисел. выбрать из массива все четные и упорядочить их по возрастанию....

Разработать приложение, в котором можно выбирать различные методы сортировки для упорядочивания элементов массива
Помогите пожалуйста с приложением. unit Unit7; interface uses Windows, Messages,...

Основные методы сортировки массивов
помогите пожалуйста(( я не могу решить вот такую вот задачу(( Выполнить сортировку по убыванию....

Методы сортировки массивов.Метод пузырьковый
Метод пузырьковый nLeft 600 nRight 1600 Помогите сделать Зарание Благодарю.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru