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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.84
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 13:49     Пузырьковая сортировка #1
Здравствуйте хочу разобраться в сортировках....нашла пример в книге.....но почему то она не работает....если не сложно объясните ошибки.спасибо

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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 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;
}
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
02.04.2011, 14:12     Пузырьковая сортировка #3
строка 6: должно быть записано так #include <iostream> (стандартные библиотеки желательно указывать в угловых скобках)
строка 17: замените декремент --y на инкремент ++y

Возможно прийдется еще удалить сроку #include "stdafx.h" (если с ней работать не будет).
Fafle
 Аватар для Fafle
34 / 34 / 4
Регистрация: 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";
}
yuliyayuliya28
3 / 3 / 0
Регистрация: 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;
}
Спасибо большое.....только получается одна проблема......он ставит все цифры правильно кроме последней......
Миниатюры
Пузырьковая сортировка  
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 14:28  [ТС]     Пузырьковая сортировка #6
Цитата Сообщение от vitaska Посмотреть сообщение
строка 6: должно быть записано так #include <iostream> (стандартные библиотеки желательно указывать в угловых скобках)
строка 17: замените декремент --y на инкремент ++y

Возможно прийдется еще удалить сроку #include "stdafx.h" (если с ней работать не будет).
вы не знаете как решить проблему?последний элемент не хочет участвовать в сортировке
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
02.04.2011, 14:30     Пузырьковая сортировка #7
Тут можно посмотреть реализацию алгоритма пузырьковой сортировки.
А вообще, если хочешь разобраться в принципе работы конкретного алгоритма, то не лишним будет нарисовать некоторый массив на бумаге, и пройти на бумаге все шаги алгоритма, наблюдая за тем, как меняется массив.
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
02.04.2011, 14:40  [ТС]     Пузырьковая сортировка #8
Цитата Сообщение от Nameless One Посмотреть сообщение
Тут можно посмотреть реализацию алгоритма пузырьковой сортировки.
А вообще, если хочешь разобраться в принципе работы конкретного алгоритма, то не лишним будет нарисовать некоторый массив на бумаге, и пройти на бумаге все шаги алгоритма, наблюдая за тем, как меняется массив.
Большое спасибо очень полезная информация....как раз нужно разссмотреть все виды сортировки...
но вот что в этой не так не пойму.....
Fafle
 Аватар для Fafle
34 / 34 / 4
Регистрация: 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?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 15:05     Пузырьковая сортировка
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
DexMipt
13 / 13 / 1
Регистрация: 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;
}
Вроде как короче )
Yandex
Объявления
02.04.2011, 15:05     Пузырьковая сортировка
Ответ Создать тему
Опции темы

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