Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 24
1

Сортировка вставками

25.04.2016, 09:04. Просмотров 319. Ответов 1
Метки нет (Все метки)

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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
void insertionSort(int *, int); // прототип функции сортировки вставками
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    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() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "n";
 
    insertionSort(sorted_array, size_array); // вызов функции сортировки вставками
 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "n";
    delete [] sorted_array; // высвобождаем память
    system("pause");
    return 0;
}
 
void insertionSort(int *arrayPtr, int length) // сортировка вставками
{
    int temp, // временная переменная для хранения значения элемента сортируемого массива
        item; // индекс предыдущего элемента
    for (int counter = 1; counter < length; counter++)
    {
        temp = arrayPtr[counter]; // инициализируем временную переменную текущим значением элемента массива
        item = counter-1; // запоминаем индекс предыдущего элемента массива
        while(item >= 0 && arrayPtr[item] > temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        {
            arrayPtr[item + 1] = arrayPtr[item]; // перестановка элементов массива
            arrayPtr[item] = temp;
            item--;
        }
    }
}
Нужно,чтоб программа считала кол-во перестановок и сравнений,и выводились данные числа на экран)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2016, 09:04
Ответы с готовыми решениями:

Сортировка вектора по полю(Сортировка вставками)
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato. Вот класс: #pragma...

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Сортировка вставками.
Пожалуйста помогите написать программу на языке &quot;си&quot; Дана последовательность чисел a1, a2, …, an...

Сортировка вставками
Помогите плиз немогу написать программу, незнаю с чего начать и что писать, может у кого что нить...

1
Заблокирован
25.04.2016, 10:40 2
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
#include <iostream>
#include <random>
#include <algorithm>
#include <functional>
#include <tuple>
#include <iterator>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    size_t size_array;
    cin >> size_array;
 
    int* sorted_array = new int[size_array];
    random_device rd;
    mt19937_64 gen(rd());
    uniform_int_distribution<> d(0, 99);
    generate_n(sorted_array, size_array, bind(d, gen));
    copy(sorted_array, sorted_array + size_array, ostream_iterator<int>(cout, " "));
    cout << endl;
 
    tuple<int, int> counter = { 0, 0 };
    for (size_t i = 0; i < size_array; ++i)
        for (size_t j = i; j > 0; --j)
        {
            get<0>(counter)++;
            if (sorted_array[j] > sorted_array[j - 1]) break;
            swap(sorted_array[j], sorted_array[j - 1]), get<1>(counter)++;
        }
 
    copy(sorted_array, sorted_array + size_array, ostream_iterator<int>(cout, " "));
    cout <<endl << "Кол-во сравнений: " << get<0>(counter) <<"\nКол-во перестановок: "<< get<1>(counter) << endl;
 
    delete[] sorted_array;
    cin.ignore().get();
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2016, 10:40

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

Сортировка вставками
template&lt; class T &gt; void insertSort(T* a, int size) { T tmp; for (int i = 1, j; i &lt;...

Сортировка вставками
Задача: В компьютер по очереди поступают числа, из них форми*руется массив А так, чтобы он...

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

Сортировка вставками
Сортировка вставками: пусть первые k элементов упорядочены по возростанию. Берется (k+1)-ый...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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