13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
1

Сортировка пузырьком

25.01.2016, 14:15. Показов 1257. Ответов 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
59
60
61
62
63
64
65
66
67
68
69
70
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
   const int a=10;
   int mas[a]; 
   setlocale(LC_ALL,"Rus");
   for(int i=0;i<a;i++)
   {
   mas[i]=rand()%300;
   cout<<mas[i]<<endl;        
   }
    cout<<endl;
    
    int count;
    int n=-1;
    cout<<"Введите число массива: ";
    cin>>count;
    for(int i=0;i<a;i++)
    {
    if(mas[i]==count)
      {
       n=i;              
      }    
      
    }
    cout<<"Введённому значению соответствует индекс: "<<n<<endl;
    
    int temp;
    for(int i=a-1;i>0;i--)
    {
     for(int j=0;j<a;j++)
     {
       if(mas[j]>mas[j+1])
       {
       temp=mas[j];mas[j]=mas[j+1];mas[j+1]=temp;                 
       }      
     }                   
    }
    cout<<"Массив после сортировки: \n";
    for(int i=0;i<a;i++)
    {
    cout<<mas[i]<<endl;        
    }
    
    cout<<endl<<endl;
    
     int temp2;
     for(int i=a-1;i>0;i--)
    {
     for(int j=0;j<a;j++)
     {
       if(mas[j]<mas[j+1])
       {
       temp2=mas[j];mas[j]=mas[j+1];mas[j+1]=temp2;                 
       }      
     }                   
    }
    
    cout<<"Массив после сортировки: \n";
    for(int i=0;i<a;i++)
    {
    cout<<mas[i]<<endl;        
    }
    
    cout<<endl<<endl;
    system("pause");
 return 0;   
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2016, 14:15
Ответы с готовыми решениями:

Сортировка Пузырьком
Здравствуйте! Пытался выполнить задание: Сортировка Пузырьком - один из простейших способов...

Сортировка пузырьком
Привет всем. Проверьте программу, пожалуйста. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int n, i,...

сортировка пузырьком
Почему у меня при сортировке пузырьком значения некоторых чисел меняются на другие. double...

Сортировка Пузырьком :)
Привет, ребята :) Вообщем, наткнулся на написание программы с использованием сортировки пузырьком....

10
Dimension
584 / 452 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
25.01.2016, 14:26 2
где вы такую реализацию нашли

Добавлено через 5 минут
j<a-1 сделайте
1
13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.01.2016, 15:08  [ТС] 3
Цитата Сообщение от Dimension Посмотреть сообщение
где вы такую реализацию нашли

Добавлено через 5 минут
j<a-1 сделайте
Спасибо, всё получилось теперь. Но я только логику не пойму, почему j<a-1 ?
Это в онлайн-уроке была такая реализация.
0
Dimension
584 / 452 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
25.01.2016, 15:20 4
потому что за границы выходите
1
13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.01.2016, 15:20  [ТС] 5
Цитата Сообщение от Dimension Посмотреть сообщение
где вы такую реализацию нашли

Добавлено через 5 минут
j<a-1 сделайте
Логику понял. Но тогда и в первом случае, когда я сортировал по возрастанию, нужно поставить j<a-1 ?
0
Wanna be serious
581 / 470 / 184
Регистрация: 31.07.2013
Сообщений: 1,691
25.01.2016, 15:32 6
Ofelion, в онлайн уроках было сказано что массивы в C/C++ начинаются с 0 а не с 1?
0
13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.01.2016, 15:44  [ТС] 7
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Ofelion, в онлайн уроках было сказано что массивы в C/C++ начинаются с 0 а не с 1?
С 0. mas[0], mas[1].
Но если, например дано a=10, mas[a] , то так же записывается:
for(int i=0;i<a;i++) или вот так: for(int i=0;i<=a-1;i++).
0
Wanna be serious
581 / 470 / 184
Регистрация: 31.07.2013
Сообщений: 1,691
25.01.2016, 15:49 8
Ofelion, да, применяются обе: в первом случае если нужно пройти по всем элементам массива, во втором случае, как подмечено в этой теме, можно использовать в сортировке пузырьком: в теле цикла вы используете запись mas[i+1], что недопустимо при нахождении цикла на последнем элементе с записью в первой форме.
0
13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.01.2016, 16:23  [ТС] 9
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Ofelion, да, применяются обе: в первом случае если нужно пройти по всем элементам массива, во втором случае, как подмечено в этой теме, можно использовать в сортировке пузырьком: в теле цикла вы используете запись mas[i+1], что недопустимо при нахождении цикла на последнем элементе с записью в первой форме.
То есть, если я правильно понимаю, если в цикле я пишу j<a, а в теле цикла пишу mas[j+1], то таким образом я выйду за пределы массива, как сказал Dimension? Поэтому и нужно для сортировки пузырьком в условии цикла писать j<a-1 , а в теле цикла mas[j+1]. Вроде так, да?
0
Wanna be serious
581 / 470 / 184
Регистрация: 31.07.2013
Сообщений: 1,691
25.01.2016, 16:30 10
Лучший ответ Сообщение было отмечено Ofelion как решение

Решение

Ofelion, именно так Но при желании можно немного подкорректировать: можете начинать отсчет с i = 1 с условием i < a, при этом в теле цикла будет сравниваться mas[i] и mas[i-1]. Ну или идти с конца массива как mas[a-1].
1
13 / 13 / 16
Регистрация: 26.01.2015
Сообщений: 213
25.01.2016, 16:54  [ТС] 11
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Ofelion, именно так Но при желании можно немного подкорректировать: можете начинать отсчет с i = 1 с условием i < a, при этом в теле цикла будет сравниваться mas[i] и mas[i-1]. Ну или идти с конца массива как mas[a-1].
Всё понял теперь) Большое спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2016, 16:54

сортировка пузырьком
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(int...

Сортировка пузырьком
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; using namespace std; void Sort(int *,...

Сортировка пузырьком
вот написала программу но не работает :( #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt;...

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

Сортировка пузырьком с++
Сортировка пузырьком, все работает, но помогите поменять ввод цифр в ручную на ввод цифр рандома...

Сортировка пузырьком
Можете помочь? Программа в консоли: Спросить у пользователя 5 чисел и сохранить их в массив....


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

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

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