Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/32: Рейтинг темы: голосов - 32, средняя оценка - 4.81
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
1

Пузырьковая сортировка

02.04.2011, 13:49. Показов 6336. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте хочу разобраться в сортировках....нашла пример в книге.....но почему то она не работает....если не сложно объясните ошибки.спасибо

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
// пузырьковая сортитровка.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <conio.h>
#include "iostream"
 
using namespace std;
 
int main()
{
    int array[100],size,temp,x,y,i;
    cin>>size;
for(x=0;x<size;x++)
cin>>array[x];
for(x=0;x<size-1;x++)
for(y=x+1;y<size;--y)
if (array[x]>array[y])
{
    temp=array[x];
    array[x]=array[y];
    array[y]=temp;
}
for(i=0;i<size;i++)
cout<<array[i]<< " ";
_getch();
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2011, 13:49
Ответы с готовыми решениями:

Пузырьковая сортировка
Дан одномерный массив целых чисел A. Напишите программу, которая упорядочит все элементы до...

Пузырьковая сортировка
Здравствуйте .Объясните , пожалуйста , подробно , как работает пузырьковая сортировка . ...

Сортировка пузырьковая
Привет всем!помогите отсортировать задачку. #include &lt;iostream&gt; #include &lt;iomanip&gt; using...

Пузырьковая сортировка
Здравствуйте! Необходимо осуществить пузырьковую сортировку в столбцах двумерного массива. Но...

9
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 14:02 2
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
Здравствуйте хочу разобраться в сортировках....нашла пример в книге.....но почему то она не работает....если не сложно объясните ошибки.спасибо

// пузырьковая сортитровка.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <conio.h>
#include "iostream"

using namespace std;

int main()
{
int array[100],size,temp,x,y,i;
cin>>size;
for(x=0;x<size;x++)
cin>>array[x];
for(x=0;x<size-1;x++)
for(y=x+1;y<size;--y)
if (array[x]>array[y])
{
temp=array[x];
array[x]=array[y];
array[y]=temp;
}
for(i=0;i<size;i++)
cout<<array[i]<< " ";
_getch();

return 0;
}
C++
1
2
3
4
5
6
7
8
for(x=0;x<size-1;x++)
for(y=x+1;y<size;++y)
if (array[x]>array[y])
{
    temp=array[x];
    array[x]=array[y];
    array[y]=temp;
}
2
101 / 101 / 15
Регистрация: 04.02.2010
Сообщений: 162
02.04.2011, 14:12 3
строка 6: должно быть записано так #include <iostream> (стандартные библиотеки желательно указывать в угловых скобках)
строка 17: замените декремент --y на инкремент ++y

Возможно прийдется еще удалить сроку #include "stdafx.h" (если с ней работать не будет).
1
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136
02.04.2011, 14:14 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
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
template <class T>
void bubbleSort(T a[], long size){
    long 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 long SIZE=10;
    int ar[SIZE];
    
    // до сортировки
    for(int i=0;i<SIZE;i++){
        ar[i]=rand()%100;
        cout<<ar[i]<<"\t";
    }
    cout<<"\n\n";
    bubbleSort(ar,SIZE);
 
    // после сортировки
    for(int i=0;i<SIZE;i++){
        cout<<ar[i]<<"\t";
    }
    cout<<"\n\n";
}
1
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 14:17  [ТС] 5
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for(x=0;x<size-1;x++)
for(y=x+1;y<size;++y)
if (array[x]>array[y])
{
    temp=array[x];
    array[x]=array[y];
    array[y]=temp;
}
Спасибо большое.....только получается одна проблема......он ставит все цифры правильно кроме последней......
Миниатюры
Пузырьковая сортировка  
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 14:28  [ТС] 6
Цитата Сообщение от vitaska Посмотреть сообщение
строка 6: должно быть записано так #include <iostream> (стандартные библиотеки желательно указывать в угловых скобках)
строка 17: замените декремент --y на инкремент ++y

Возможно прийдется еще удалить сроку #include "stdafx.h" (если с ней работать не будет).
вы не знаете как решить проблему?последний элемент не хочет участвовать в сортировке
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
02.04.2011, 14:30 7
Тут можно посмотреть реализацию алгоритма пузырьковой сортировки.
А вообще, если хочешь разобраться в принципе работы конкретного алгоритма, то не лишним будет нарисовать некоторый массив на бумаге, и пройти на бумаге все шаги алгоритма, наблюдая за тем, как меняется массив.
1
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 14:40  [ТС] 8
Цитата Сообщение от Nameless One Посмотреть сообщение
Тут можно посмотреть реализацию алгоритма пузырьковой сортировки.
А вообще, если хочешь разобраться в принципе работы конкретного алгоритма, то не лишним будет нарисовать некоторый массив на бумаге, и пройти на бумаге все шаги алгоритма, наблюдая за тем, как меняется массив.
Большое спасибо очень полезная информация....как раз нужно разссмотреть все виды сортировки...
но вот что в этой не так не пойму.....
0
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136
02.04.2011, 14:57 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main() {
    int temp;
    int array[10] = {51, 83, 75, 32, 57, 86, 24, 49, 18, 20};
    for (int x = 0; x < 9; x++)
        for (int y = x + 1; y < 10; ++y)
            if (array[x] > array[y]) {
                temp = array[x];
                array[x] = array[y];
                array[y] = temp;
            }
    for (int i = 0; i < 10; i++)
        cout << array[i] << " ";
}
Алгоритм ваш же, все работает отлично, ищите лишнее у вас
Возможно вы вводите size 99?
0
13 / 13 / 2
Регистрация: 13.03.2011
Сообщений: 98
02.04.2011, 15:05 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
#include <stdio.h>
#define SIZE 100
 
int main()
{
    int a[SIZE],i,n;
    int pass,hold;
 
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
 
    for(pass=1;pass<n;pass++){
        for(i=0;i<n-1;i++){
            if(a[i]<a[i+1]){
               hold=a[i];
               a[i]=a[i+1];
               a[i+1]=hold;
   }}}
 
   for(i=0;i<n;i++)
       printf("%d ", a[i]);
 
   return 0;
}
Вроде как короче )
0
02.04.2011, 15:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2011, 15:05
Помогаю со студенческими работами здесь

Пузырьковая сортировка
В чес дело не могу понять? Переменной массива с индексом X присваивается какое то левое значение. ...

Пузырьковая сортировка
Помогите плз. Работаю в Visual Studio 2010. Написал алгоритм пузырьковой сортировки, но когда...

Пузырьковая сортировка
Написал программу сортировки методом пузырька: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Пузырьковая Сортировка
Описать структуру с именем Train, содержащую следующие поля: Point (название пункта назначения),...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru