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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 194, средняя оценка - 4.98
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
#1

Сортировка пузырьком с++ - C++

19.12.2010, 14:26. Просмотров 23924. Ответов 11
Метки нет (Все метки)

Сортировка пузырьком, все работает, но помогите поменять ввод цифр в ручную на ввод цифр рандома (от -100 до +100).
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>
using namespace std;
// наш массив
int array[100];
// сортировка
void*Sort(int col) 
{ 
    // временная переменная для хранения промежуточного результата
    int trash=0;  
    // пока не равно количеству елементов
    for (int i=1; i<=col ; i++)
    {
        // пока не равно col-i
        for (int j=1; j<=col-i; j++) 
        {
            // если левый элемент больше
            if (array [j]>array [j+1]) 
            {
                // правого, то меняем их местами
                trash=array[j]; 
                array [j]=array [j+1];
                array [j+1]=trash;
            }
        }
    }
}
// вывод на экран нашего массива после сортировки
void*Out(int col) 
{
    for (int i=1; i<=col; i++) 
    cout << array [i] <<" ";
    cout << endl; 
}
int main()
{
    int col_el;
    cout << " Enter length of array"<< endl;
    // считываем количество элементов
    cin >> col_el;
    // считываем элементы массива
    for (int n=1; n<=col_el ; n++) 
    cin >> array[n];
    Sort(col_el); 
    // сортируем их
    cout << "Result is :"<<endl; 
    // и выводим  
    Out(col_el);
    // ждем нажатия клавиши
    cin >> col_el; 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 14:26     Сортировка пузырьком с++
Посмотрите здесь:

сортировка пузырьком - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(int argc, char *argv) { ...

Сортировка пузырьком - C++
Требуется отсортировать пузырьком элементы массива, которые находятся на непарных позициях.

Сортировка пузырьком - C++
Не удается сделать сортировку пузырьком (то что после //1111), не сортирует, либо ошибки в памяти. // spisok.cpp : Defines the entry...

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

сортировка пузырьком - C++
Вечер добрый! Задача проста: отсортировать сначала по зп, если &lt; 400, то в 1ый список, а если больше, то во второй, отсортировав по...

Сортировка пузырьком - C++
Здравствуйте! Решаю задачу:пользователь вводит слова через пробел,я должен вывести их в алфавитном порядке.Моя проблема в сортировке.Что...

Сортировка пузырьком - C++
Всем доброго времени суток. Помогите пожалуйста написать программу сортировки пузырьком в соответствии с данной блок-схемой.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
19.12.2010, 14:56     Сортировка пузырьком с++ #2
C++
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
#include <time.h>
 
int make_rand()
{
static int k=0;
srand(time(0)+k);
k++
return rand()%200-100;
}
в маине:
C++
1
2
    for (int n=1; n<=col_el ; n++) 
       array[n]=make_rand();
Добавлено через 4 минуты
можно еще без статической переменной, передавая число n в функцию из цикла.
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
20.12.2010, 01:25  [ТС]     Сортировка пузырьком с++ #3
спс, но на return rand()%200-100; - ошибка вылезла.

мне уже подсказали вот так
C++
1
#include <stdlib.h>
C++
1
2
3
srand(1000);
for (int n=1; n<=col_el ; n++) 
array[n]=rand()%201-100;
Добавлено через 9 часов 16 минут
ещё, сложно будет разпарелелить такую программу в несколько потоков? с помощью библиотеки pthreads) кто поможет?))
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
20.12.2010, 01:27     Сортировка пузырьком с++ #4
сначало скажи как тебе распределить сортировку между потоками
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
20.12.2010, 10:32  [ТС]     Сортировка пузырьком с++ #5
ну препрод сказал что б 1 поток сортировал с -100 до 0 , второй поток сортировал с 1 до 100, а в главном потоке идет ввод и вывод данных
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
20.12.2010, 12:59     Сортировка пузырьком с++ #6
C++
1
2
3
srand(1000);
for (int n=1; n<=col_el ; n++) 
array[n]=rand()%201-100;
тебе так сортировать нечего, все элементы равны друг другу.

Добавлено через 7 минут
спс, но на return rand()%200-100; - ошибка вылезла.
ошибка у меня в пропущенной ";" после оператора инкремента, ну и действительно вместо 200 надо 201, иначе число 100 включено не будет.
исправленный вариант без стат.переменной:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int make_rand(int k)
{
srand(time(0)+k);
return rand()%201-100;
}
/*
...
*/
for (int n=1; n<=col_el ; n++) 
       array[n]=make_rand(n);
/*
...
*/
Vladislav_Sh
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 14
24.05.2012, 21:10     Сортировка пузырьком с++ #7
Народ, попробовал этот код, Но! Например вводишь 85 50 90 12 , он выводит 0 12 50 85, и так всё время, откуда-то берется 0 , и самое большое число убирается, чего так?
albannikov
12 / 12 / 2
Регистрация: 20.12.2012
Сообщений: 86
20.12.2012, 13:08     Сортировка пузырьком с++ #8
То, что надо

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
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
 
 
void RangedRand( int range_min, int range_max)      //генератор случайных чисел
{   
    int i;
    for ( i = 0; i < 5; i++ )     
   {
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)
            + range_min;       
      printf("%6d\n",u);        
   }
}
 
int main( void )
{
    srand( (unsigned)time( NULL ) );
    RangedRand(-100,100);
   _getch();
   
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
 
 
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
 
 
int RangedRand( int range_min, int range_max)
{       
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)
            + range_min;
      return u;
           
}
 
int main(void)
{
    srand( (unsigned)time( NULL ) ); 
    int mas[7][7],i,j;
 
    for (i=0;i<6;i++)
    {
        for(j=0;j<6;j++)
        {
        mas[i][j] = RangedRand(-100,100);
        printf(" %d\t", mas[i][j]); 
        }
 
        printf("\n");
    
    }   
    _getch();
}
Julianna
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 5
17.04.2013, 09:22     Сортировка пузырьком с++ #9
Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо

Добавлено через 2 минуты
albannikov, Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо
albannikov
12 / 12 / 2
Регистрация: 20.12.2012
Сообщений: 86
19.05.2013, 08:12     Сортировка пузырьком с++ #10
Цитата Сообщение от Julianna Посмотреть сообщение
Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо

Добавлено через 2 минуты
albannikov, Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо
Пожалуйста

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
#include "stdafx.h"         //Подключаем библиотеки
#include <stdlib.h>        //Подключаем библиотеки
#include <stdio.h>  //Подключаем библиотеки
#include <time.h>   //Подключаем библиотеки
#include <conio.h>  //Подключаем библиотеки
 
 
 
int RangedRand( int range_min, int range_max)   // Функция "Генератор случайных чисел"
{       
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)  // Переменной присваиваем сл. значение
            + range_min;
      return u;                     //Возвращаем значение переменной           
}
 
int main(void)  // Главная функция
{
    srand( (unsigned)time( NULL ) );  // Сбрасываем генератор сл. чисел, иначе числа каждый раз будут одинаковые
    int mas[7][7],i,j;            // Объявляем 2-мерный массив 7х7
 
    for (i=0;i<7;i++)                 // Запускаем цикл заполнения строк
    {
        for(j=0;j<7;j++)              // Вложенный цикл заполнения столбцов
        {
        mas[i][j] = RangedRand(-100,100); // Каждому элементу присваиваем сл. значение
        printf(" %d\t", mas[i][j]);       // После чего выводим этот элемент массива на экран
        }
 
        printf("\n");      // Для отступа между строками
    
    }   
    _getch();   // Программа выполнилась, ожидаем нажатия Any Key
}
Arlensi
0 / 0 / 0
Регистрация: 30.01.2017
Сообщений: 2
31.01.2017, 17:58     Сортировка пузырьком с++ #11
Подскажите, в чём разница между кодом выше и этим (по результатам работы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Bubble() // Функция сортировки пузырьком
{
    srand(time(0)); // Привязка рандома к времени
    int massiw[10]; // Наш массив
    
    for(int i(0); i<10; i++)
       {
        massiw[i]=0; // Обнуляем массив
    massiw[i]=rand()%500; // Присваиваем значения. Макс. значение massiw[i] == 500
       }
 
    for(int i(0); i<10; i++) //Внешний цикл
        for(int j(0); j<10; j++) // Сравниваю элемент massiw[j] с каждым элементом с индексом внешнего цикла
            if(massiw[j]>massiw[i])
            swap(massiw[j],massiw[i]);
    
    for(int l(0); l<10; l++) //Вывожу результат на экран
    cout<<"\nMassiw["<<l<<"] == "<<massiw[l];
}
В итоге массив отсортирован, каждый элемент massiw[j] сравниваеться с massiw[i], если massiw [j ]больше--меняем местами, т.е. *легкие элементы всплывут*. Какая разница, проходить j с 9го элемента к 0му, или с 0 до 9, ведь результат тот же о_О ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2017, 18:05     Сортировка пузырьком с++
Еще ссылки по теме:

Сортировка пузырьком - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #define N 9 ...

Сортировка пузырьком - C++
Привет всем! У меня по методу вопросов нет, успешно отсортировал от меньшего к большему, но вот от большего к меньшему - какая-то шляпа...

сортировка пузырьком - C++
#include &lt;iostream&gt; using namespace std; void main() { const n=4; int a,i,j,buffer; for(i=0;i&lt;n;i++) cin&gt;&gt;a; for (i=0;...

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

Сортировка пузырьком - C++
Правильно ли организую ввод размера массива через клавиатуру?Если неправильно-то как? #include &lt;stdio.h&gt;; #include &lt;stdlib.h&gt;; ...


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

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
6963 / 4134 / 586
Регистрация: 29.11.2010
Сообщений: 10,957
31.01.2017, 18:05     Сортировка пузырьком с++ #12
Цитата Сообщение от Arlensi Посмотреть сообщение
Какая разница, проходить j с 9го элемента к 0му, или с 0 до 9, ведь результат тот же о_О ?
С точки зрения результата разницы, конечно, нет.
https://habrahabr.ru/post/73726/
Но не стоит так сильно заморачивать себе этим голову.
Yandex
Объявления
31.01.2017, 18:05     Сортировка пузырьком с++
Ответ Создать тему
Опции темы

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