Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
#1

Отсортировать масив методом пузырьковой сортировки - C++

05.07.2012, 20:47. Просмотров 2745. Ответов 24
Метки нет (Все метки)

1). Создать 2 массива по 5 элементов. Заполнить их случайными числами и отсортировать первый в возрастающем порядке, а второй в убывающем.
2). Скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, чтобы вначале шли все значения 1-го массива, а потом 2-го.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 20:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отсортировать масив методом пузырьковой сортировки (C++):

Заполнить случайныйми числами одномерный динамический массив; отсортировать его методом пузырьковой сортировки - C++
В плюсах полный ноль...помогите пожалуйста создать одномерный массив через new и delete его сортировку пузырьком и вывод. Заранее спасибо.

Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while - C++
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить программы для пузырьковой...

Отсортировать массив с помощью сортировки методом вставки - C++
Подскажите код,есть такая задачка...Дан двумерный массив заполненый с помощью генератора случайных чисел, отсортировать массив с помощью...

Динамический массив отсортировать по возростанию методом быстрой сортировки - C++
Отсортировать дин. масив по возростанию методом быстрой сортировки.

Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях - C++
Имеется одномерный массив длиной N = 50. Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях, так, чтобы...

Заполнить массив случайными числами и отсортировать его методом быстрой сортировки по убыванию - C++
Написать программу на с++ которая заполняет массив случайными числами и сортирует их методом быстрой сортировки ,за направлением убывания ....

24
Петррр
5965 / 3402 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
05.07.2012, 21:11 #2
Алгоритмы сортировок
1
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
06.07.2012, 09:19  [ТС] #3
первую часть решил не могу понять вторую как соединить два масива по 5 елементов в один из 10 елементов помогите пожалуйста

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 <time.h>
using namespace std;
 
template <class T>
void bubbleSort(T a[], int size)
{
    int i, j;
    T x;
    for(i=0;i<size;i++)
    {            // i - номер прохода
        for(j=size-1;j>i;j--)
        {     // внутренний цикл прохода
            if(a[j-1]>a[j])
            {
                x=a[j-1];
                a[j-1]=a[j];
                a[j]=x;
            }
        }
    }
}
void main()
{
    srand(time(NULL));
 
    const int n=5;
    int ar[n];
    // до сортировки
    for(int i=0;i<n;i++)
    {
        ar[i]=rand()%100;
    }
    bubbleSort(ar,n);
    // после сортировки в возростающем порядке
    for(int i=0;i<n;i++)
    {
        cout<<ar[i]<<"\t";
    }
    cout<<"\n\n";
 
    const int m=5;
    int arr[m];
    // до сортировки
    for(int i=0;i<m;i++)
    {
        arr[i]=rand()%100;
    }
    bubbleSort(arr,m);
    // после сортировки в убывающем порядке
    for(int i=m-1;i>=0;i--)
    {
        cout<<arr[i]<<"\t";
    }
    cout<<"\n\n";
 
    
}
0
Rabbit13245
28 / 28 / 2
Регистрация: 21.04.2012
Сообщений: 282
06.07.2012, 09:33 #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
#include <iostream>
using namespace std;
 
void main(){
    int a[5],b[5],c[10];
    for (int i = 0; i<5; i++){
        a[i] = i;
        b[i] = (5-i);
    }
    int j(0);
    int k(0);
    for (;k<5;k++){
        c[k] = a[j];
        j++;
    }
    int l(0);
    for (;k<10;k++){
        c[k] = b[l];
        l++;
    }
    for(int p = 0;p<10;p++){
        cout<<c[p]<<" ";
    }
    return;
}
1
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 09:40 #5
bvladsity, рекомендую (в общем, на будущее):
все переменные объявлять (и инициализировать при необходимости) вначале тела функции.
по коду:
тебе надо просто ввести массив, например arr3[10] и присвоить значения вначале одного массива элементам от 0 до 4, а потом второго - от 5 до 9. Смотри "новый код"
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
61
62
63
64
65
66
67
68
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
template <class T>
void bubbleSort(T a[], int size)
{
    int i, j;
    T x;
    for (i = 0; i < size; i++) {            // i - номер прохода
        for (j = size - 1; j > i; j--) {    // внутренний цикл прохода
            if(a[j - 1] > a[j]) {
                x = a[j - 1];
                a[j - 1] = a[j];
                a[j] = x;
            }
        }
    }
}
int main() {
    int i;      //~ counter
    const int n = 5;
    int ar[n];
    const int m = 5;
    int arr[m];
    int arr3[m + n];
 
    srand(time(NULL));
 
    // до сортировки
    for (i = 0; i < n; i++) {
        ar[i] = rand() % 100;
    }
 
    bubbleSort(ar,n);
 
    // после сортировки в возростающем порядке
    for (i = 0; i < n; i++) {
        cout<<ar[i]<<"\t";
    }
    cout<<"\n\n";
 
    // до сортировки
    for (i = 0; i < m; i++) {
        arr[i] = rand() % 100;
    }
    bubbleSort(arr, m);
    // после сортировки в убывающем порядке
    for (i = m - 1; i >= 0; i--) {
        cout<<arr[i]<<"\t";
    }
    cout<<"\n\n";
 
    //~ новый код (вторая часть задачи)
    for (i = 0; i < n; i++) {
        arr3[i] = ar[i];
        cout<<arr3[i]<<"\t";
    }
    cout<<"\n";
    for (i = n; i < n + m; i++) {
        arr3[i] = arr[i - n];
        cout<<arr3[i]<<"\t";
    }
 
    return 0;
}
1
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
06.07.2012, 09:42  [ТС] #6
Цитата Сообщение от Rabbit13245 Посмотреть сообщение
грубо, но как то так)
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
#include <iostream>
using namespace std;
 
void main(){
    int a[5],b[5],c[10];
    for (int i = 0; i<5; i++){
        a[i] = i;
        b[i] = (5-i);
    }
    int j(0);
    int k(0);
    for (;k<5;k++){
        c[k] = a[j];
        j++;
    }
    int l(0);
    for (;k<10;k++){
        c[k] = b[l];
        l++;
    }
    for(int p = 0;p<10;p++){
        cout<<c[p]<<" ";
    }
    return;
}
твое решение выводит на консоль индексы елементов а мне надо вывести елементы масивов
0
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 09:46 #7
bvladsity, еще рекомендую использовать пробел, визуально отделяя операнды от операторов, а также после запятой. Т.е.:
C++
1
2
3
4
func(a,b,c);    // :(
func(a, b, c);  // так лучше :)
i=a+b+c;       // :(
i = a + b + c; // так лучше :)
1
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
06.07.2012, 09:51  [ТС] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//~ новый код (вторая часть задачи)
    for (i = 0; i < n; i++) {
        arr3[i] = ar[i];
        cout<<arr3[i]<<"\t";
    }
    cout<<"\n";
    for (i = n; i < n + m; i++) {
        arr3[i] = arr[i - n];
        cout<<arr3[i]<<"\t";
    }
 
    return 0;
}
так оно выводит две половины в возрастающем порядке посмотрите скриншот
0
Миниатюры
Отсортировать масив методом пузырьковой сортировки  
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 09:54 #9
ты скопируй себе ВЕСЬ МОЙ КОД, а не только мою часть.
УМВР (см. картинку).
0
Миниатюры
Отсортировать масив методом пузырьковой сортировки  
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:00 #10
все - понял, что ты хотел. это потому что ты выводишь второй массив в убывающем порядке, а записан он в возрастающем. необходимо переписать второй массив.
1
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
06.07.2012, 10:01  [ТС] #11
2.Скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, чтобы вначале шли все значения 1-го массива, а потом 2-го.

если я правильно понимаю условие то елементы должны быть в таком порядке

9 20 39 45 66 97 56 38 27 9 в одну строку
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,086
06.07.2012, 10:09 #12
Цитата Сообщение от remarkes Посмотреть сообщение
еще рекомендую использовать пробел, визуально отделяя операнды от операторов, а также после запятой
Цитата Сообщение от remarkes Посмотреть сообщение
i=a+b+c;
i = a + b + c;
Чем лучше????
при двадцати слагаемых в строку не влезем?
еще понятно при объявлении
Цитата Сообщение от bvladsity Посмотреть сообщение
int a[5],b[5],c[10];
визуально отделить что три массива
Цитата Сообщение от remarkes Посмотреть сообщение
bvladsity, рекомендую (в общем, на будущее):
все переменные объявлять (и инициализировать при необходимости) вначале тела функции.
Ага особенно если функция на 3-4 экрана а переменная нужна в двух-трех строках
C++
1
2
3
4
5
6
7
.....................
....................
int tmp=a;
a=b;
b=tmp;
..........................
..........................
очень удобно tmp в начале функции объявить
Си-шное наследие?
переменные в плюсах объявляются по мере необходимости

при таких заявлениях надо или приводить аргументы или писать IMHO(по моему скромному мнению)
1
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:18 #13
да подождите вы - ему палиндром тут нужен

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
Ага особенно если функция на 3-4 экрана а переменная нужна в двух-трех строках
функции на 3-4 экрана разбиваются на 3-4 функции на один экран.
Раньше это было - правило (объявлять переменные).

Цитата Сообщение от ValeryS Посмотреть сообщение
Си-шное наследие?
переменные в плюсах объявляются по мере необходимости
это вас си-плюс-плюс расхалаживает
это красивая практика - логически и визуально отделять данные (переменные) от кода.
1
Aesonet
06.07.2012, 10:20
  #14

Не по теме:

remarkes, просто Вы советуете не совсем корректные вещи.

0
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:23 #15
bvladsity, вот код:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
template <class T>
void bubbleSort(T a[], int size)
{
    int i, j;
    T x;
    for (i = 0; i < size; i++) {            // i - номер прохода
        for (j = size - 1; j > i; j--) {    // внутренний цикл прохода
            if(a[j - 1] > a[j]) {
                x = a[j - 1];
                a[j - 1] = a[j];
                a[j] = x;
            }
        }
    }
}
int main() {
    int i;      //~ counter
    const int n = 5;
    int ar[n];
    const int m = 5;
    int arr[m];
    int arr3[m + n];
    int buffer;
    int array_size;
 
    srand(time(NULL));
 
    // до сортировки
    for (i = 0; i < n; i++) {
        ar[i] = rand() % 100;
    }
 
    bubbleSort(ar,n);
 
    // после сортировки в возростающем порядке
    for (i = 0; i < n; i++) {
        cout<<ar[i]<<"\t";
    }
    cout<<"\n\n";
 
    // до сортировки
    for (i = 0; i < m; i++) {
        arr[i] = rand() % 100;
    }
    bubbleSort(arr, m);
 
    for (i = 0; i < m; i++) {
        cout<<arr[i]<<"\t";
    }
    cout<< " - до сортировки\n";
 
    //~ создаем массив arr в убывающем порядке (палиндром)
    array_size = sizeof(arr) / sizeof(arr[0]);
    for (i = 0; i < array_size / 2; i++) {
        buffer = arr[i];
        arr[i] = arr[m - i - 1];
        arr[m - i - 1] = buffer;
    }
    cout<< "\n";
 
    //~ выводим второй массив arr, отсортированный в обратном порядке
    for (i = 0; i < m; i++) {
        cout<<arr[i]<<"\t";
    }
    cout<<" - после сортировки;\n";
 
    //~ новый код
    for (i = 0; i < n; i++) {
        arr3[i] = ar[i];
        cout<<arr3[i]<<"\t";
    }
    cout<<"\n";
    for (i = n; i < n + m; i++) {
        arr3[i] = arr[i - n];
        cout<<arr3[i]<<"\t";
    }
 
    return 0;
}
1
06.07.2012, 10:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 10:23
Привет! Вот еще темы с ответами:

Алгоритм пузырьковой сортировки - C++
#include&lt;iostream.h&gt; #define SIZE 5 void bsort (int iArray, int n); int main() { char ch; int ii; int iArray ; for(ii =...

Шаблон пузырьковой сортировки - C++
У меня проблемы с шаблоном пузырьковой сортировки. Почему элементы double не сортируется нормально? #include &lt;iostream&gt; #include...

Анализ пузырьковой сортировки - C++
здравствуйте. дайте пжл доступные статьи по теме : анализ среднего случая пузырьковой сортировки

Метод пузырьковой сортировки - C++
Подскажите как сделать сортировку одномерного массива методом пузырька по убыванию? //сортировка методом пузырька for (int...


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

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

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