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

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

28.04.2016, 19:49. Просмотров 1429. Ответов 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
#include <stdio.h>
#include <iostream>
#include <ctime>
using namespace std;
const int n = 1000;
int size;
 
void insertSort(int* a, int size) 
{
    int i, j, tmp;
    for (i = 1; i < size; ++i) 
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) 
            a[j + 1] = a[j];  
        a[j + 1] = tmp;   
    }
}
int main()
{
setlocale(0,"Rus");
int *A=new int[n];
srand(time(NULL));
cout<<"Исходный массив: ";
for (int i = 1; i < size; ++i)
{
A[i]=rand()%1000;
cout<<A[i]<<" ";
}
insertSort(A, size);
cout<<endl<<"Результирующий массив: ";
for (int i = 1; i < size; ++i) cout<<A[i]<<" ";
delete []A;
system("pause>>void");
}
Собственно, что ему не нравится? Массив не выводится на экран.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2016, 19:49
Ответы с готовыми решениями:

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

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

Сортировка вставками
Доброго времени суток, форумчане. Подскажите, пожалуйста, почему при первой реализации алгоритма...

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

3
1450 / 917 / 806
Регистрация: 30.04.2016
Сообщений: 3,092
30.04.2016, 10:48 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
40
41
42
#include <iostream>
#include <cmath>
#include <climits>
 
using namespace std;
 
int main()
{
int N, min, num, k;
cin >> N;
int A[N];
for (int i = 0; i < N; i++) 
{
cin >> A[i];
}
k = 0;
while (k < N) 
{
min = INT_MAX;
for (int i = N - 1; i >= k; i--) 
{
if (A[i] <= min)
{
min = A[i];
num = i;
}
}
for (int i = num; i >= k; i--) 
{
A[i] = A[i-1];
}
A[k] = min;
k++;
}
for (int i = 0; i < N; i++) 
{
cout << A[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
0
7 / 7 / 6
Регистрация: 24.11.2015
Сообщений: 40
Записей в блоге: 2
30.04.2016, 11:56 3
Лучший ответ Сообщение было отмечено Prog_Kosmos как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void insertSort(int nums[], int n, int &acount, int &bcount)
{
    int temp;
    for (int i = 1; i < n; i++)
    {
        for (int j = i; j > 0; j--)
        {
            acount++;
            if (nums[j - 1] > nums[j])
            {
                bcount++;
                temp = nums[j];
                nums[j] = nums[j - 1];
                nums[j - 1] = temp;
            }
            else break;
        }
    }
}
acount, bcount подсчёты сравнений, можно удалить.

Добавлено через 23 минуты
Сортировка у тебя правильная, вот size у тебя была не обьявлена..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int size = 0;
    setlocale(0, "Rus");
    int A[n];
    srand(time(NULL));
    cout << "Исходный массив: ";
    for (int i = 1; i < n; ++i)
    {
        A[i] = rand() % 1000;
        printf("%i ", A[i]);
        size++;
    }
    insertSort(A, size);
    cout << endl << "Результирующий массив: ";
    for (int i = 1; i < size; ++i) printf("%i ", A[i]);
    system("pause>>void");
}
1
1450 / 917 / 806
Регистрация: 30.04.2016
Сообщений: 3,092
30.04.2016, 17:06 4
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
#include <iostream>
#include <cmath>
#include <climits>
 
using namespace std;
 
int main()
{
int N, min, num, k;
cin >> N;
int A[N];
for (int i = 0; i < N; i++) 
{
cin >> A[i];
}
k = 0;
while (k < N) 
{
min = INT_MAX;
for (int i = N - 1; i >= k; i--) 
{
if (A[i] <= min)
{
min = A[i];
num = i;
}
}
for (int i = num; i >= k; i--) 
{
A[i] = A[i-1];
}
A[k] = min;
k++;
}
for (int i = 0; i < N; i++) 
{
cout << A[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2016, 17:06

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

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

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

Сортировка вставками
Программа работает, но криво( Нужно, что бы 10 массивов рандомных было, а не один. И еще плохо...

Сортировка вставками c++
Помогите пожалуйста как в С++ сортировать вставками в оконном виде ? Скиньте код.


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

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

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