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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
bvladsity
3 / 1 / 1
Регистрация: 24.05.2012
Сообщений: 39
05.07.2012, 20:47     Отсортировать масив методом пузырьковой сортировки #1
1). Создать 2 массива по 5 элементов. Заполнить их случайными числами и отсортировать первый в возрастающем порядке, а второй в убывающем.
2). Скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, чтобы вначале шли все значения 1-го массива, а потом 2-го.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 20:47     Отсортировать масив методом пузырьковой сортировки
Посмотрите здесь:

C++ Анализ пузырьковой сортировки
C++ Динамический массив отсортировать по возростанию методом быстрой сортировки
C++ Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while
Алгоритм пузырьковой сортировки C++
C++ Напишите функцию пузырьковой сортировки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
05.07.2012, 21:11     Отсортировать масив методом пузырьковой сортировки #2
Алгоритмы сортировок
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";
 
    
}
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;
}
remarkes
300 / 223 / 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;
}
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;
}
твое решение выводит на консоль индексы елементов а мне надо вывести елементы масивов
remarkes
300 / 223 / 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; // так лучше :)
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;
}
так оно выводит две половины в возрастающем порядке посмотрите скриншот
Миниатюры
Отсортировать масив методом пузырьковой сортировки  
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 09:54     Отсортировать масив методом пузырьковой сортировки #9
ты скопируй себе ВЕСЬ МОЙ КОД, а не только мою часть.
УМВР (см. картинку).
Миниатюры
Отсортировать масив методом пузырьковой сортировки  
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:00     Отсортировать масив методом пузырьковой сортировки #10
все - понял, что ты хотел. это потому что ты выводишь второй массив в убывающем порядке, а записан он в возрастающем. необходимо переписать второй массив.
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 в одну строку
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
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(по моему скромному мнению)
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:18     Отсортировать масив методом пузырьковой сортировки #13
да подождите вы - ему палиндром тут нужен

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

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

Не по теме:

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

remarkes
300 / 223 / 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;
}
Rabbit13245
28 / 28 / 2
Регистрация: 21.04.2012
Сообщений: 282
06.07.2012, 10:26     Отсортировать масив методом пузырьковой сортировки #16
bvladsity, мой код выводит элементы массивов)) изучите его получше)
я не писал под вашу программу а просто быстро написал вариант упаковывания двух массивов в один
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 10:36     Отсортировать масив методом пузырьковой сортировки #17
Aesonet, для того, чтобы ставить после запятой пробел - не обязательно быть наследником Си. Это нормальная практика в грамматике. Отделять данные от кода - это нормальная практика не только программирования, но и в математике.
Вспомним школу, вы решаете задачу. Учитель дает: x = 0, y = 10, ну и задача - какой-нибудь многочлен.
Вы решаете, через 10 минут учитель ВНЕЗАПНО говорит: появляется некая z, которая равна 5.
Вас не удивит такой подход? А почему он должен присутствовать в программировании?
В Си и С++ есть тысячи способов выстрелить себе в ногу. Язык это позволяет, но это не значит, что эти способы надо применять.

Добавлено через 6 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
Чем лучше????
при двадцати слагаемых в строку не влезем?
если уравнение длинное, его разбивают на несколько уравнений. Либо разбивают строку обратной косой чертой.

То, что я тут написал - это я не из головы выдумал.
Aesonet
06.07.2012, 10:38
  #18

Не по теме:

Каждий пишет как ему удобно, мне например дико смотреть на код

C++
1
2
3
for (i = 0; i < size; i++) {
 
}
для меня привычнее
C++
1
2
3
for (i = 0; i < size; i++) 
{
}
При том сами себе в "ногу стреляете", в Вашем коде 1 функция отдельная от тела, а вторая вписаная в тело. Вы определитесь а
Также, создание массива можно было вынести в функцию...

remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
06.07.2012, 11:18     Отсортировать масив методом пузырьковой сортировки #19
Aesonet, я всего лишь доделал код по теме.
Цитата Сообщение от Aesonet Посмотреть сообщение
в Вашем коде 1 функция отдельная от тела, а вторая вписаная в тело.
не понял.
Цитата Сообщение от Aesonet Посмотреть сообщение
Также, создание массива можно было вынести в функцию...
это простая задачка для школы. чо огород городить-то?
Цитата Сообщение от Aesonet Посмотреть сообщение
Каждий пишет как ему удобно
дома, исключительно для себя - да.
Есть несколько разных стилей, вам нравится стиль Оллмана, мне K&R:
http://en.wikipedia.org/wiki/Indent_style
Между тем, все они придерживаются общепринятых рекомендаций.
Заметьте, про фигурные скобки я не говорил ни слова, потому что есть несколько разных общих рекомендаций. Желательно придерживаться одной из них, а читать надо уметь в любой.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 22:48     Отсортировать масив методом пузырьковой сортировки
Еще ссылки по теме:

Шаблон пузырьковой сортировки C++
Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях C++
C++ Усовершенствовать метод пузырьковой сортировки

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
06.07.2012, 22:48     Отсортировать масив методом пузырьковой сортировки #20
Цитата Сообщение от remarkes Посмотреть сообщение
функции на 3-4 экрана разбиваются на 3-4 функции на один экран.
разбей пожалуйста WinProc с её большим swith-ем

Цитата Сообщение от remarkes Посмотреть сообщение
Раньше это было - правило (объявлять переменные).
в старом С
тебя и
C++
1
for(int i=0;i<10;i++)
не устроит?
Цитата Сообщение от remarkes Посмотреть сообщение
Вы решаете, через 10 минут учитель ВНЕЗАПНО говорит: появляется некая z, которая равна 5.
метод подстановки( когда вводится формальная переменная) не проходили?
Цитата Сообщение от remarkes Посмотреть сообщение
если уравнение длинное, его разбивают на несколько уравнений.
и вводят временную переменную которая нужна на этом участке кода
Цитата Сообщение от remarkes Посмотреть сообщение
Есть несколько разных стилей, вам нравится стиль Оллмана, мне K&R:
а ниче что K&R изобрели язык 40 лет назад
за это время многое что поменялось... и в стандарте тоже
например появилась
int Main(...

Добавлено через 3 минуты
Цитата Сообщение от remarkes Посмотреть сообщение
Либо разбивают строку обратной косой чертой.
и это очень сильно увеличивает читабельность
Yandex
Объявления
06.07.2012, 22:48     Отсортировать масив методом пузырьковой сортировки
Ответ Создать тему
Опции темы

Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru