С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
DEMUT
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 10
#1

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

28.10.2010, 20:31. Просмотров 1051. Ответов 3
Метки нет (Все метки)

Народ, можете помочь с сортировкой массива методом пузырька.
Буду очень презнателен за скорую помощь))
Вот прога:

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
86
87
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
cout << "vvedite chislo elementov massiva" << endl;
int n, z, j, k;
cin >> n;
cout << "0 - slychainoe zapolenie" << endl << "1 - zapolnenie vruchnyu" <<endl;
cin >> z;
//заполнение массива    
int i;
int * mas = new int[n];
for (i=0; i<n; i++)
{
if (z==1)     
{
cout << endl << "mas[" << i << "]=";
cin >> mas[i];
}
else
{
mas[i]=rand();
}
}
// количество различных
k=0;
for (i=0; i<n; i++)
{
for (j=i+1;j<n;j++)
if(mas[i]==mas[j])
break;
if (j==n)
k++;
}
cout << endl << "kolichestvo razlichnyx elementov= " << k ;
// произведение
int max,proizvedenie;
max=0;
proizvedenie=1;
for (i=0; i<n; i++)
if(abs(mas[i])>abs(mas[max]))
max=i;
for (i=max+1; i<n; i++)
proizvedenie=proizvedenie*mas[i];
cout << endl << "proizvedenie elementov= " << proizvedenie;
// преобразование
i=0; j=n-1;
while(i<j)
{
while ((mas[i]<0) && (i<j)) i++;
while ((mas[j]>=0) && (i<j)) j--;
if (i<j)
{
max=mas[i];
mas[i]=mas[j];
mas[j]=max;
i++;
j--;
}
}
cout<< "Preobrazovannyi massiv" << endl;
for (i=0; i<n; i++)
cout<< mas[i] << "   ";
//////////////////////// сортировка
int c;
for (i=0;i<=n;i++)
if(mas[i]>mas[i+1])
for(j=0;j<n-i-1;j++)
if(mas[j]>mas[j+1])
{
c=mas[j+1];
mas[j+1]=mas[n];
mas[n]=c;
for(j=0;j<n;k++)
if(mas[j]>mas[n++])
c=mas[n+i];
mas[j+1]=mas[j];
mas[j]=c;
i++;
}
cout<< "Sortirovka puzirkom - " << endl;
for (i=0; i<n; i++)
cout<< mas[i] << "  ";
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2010, 20:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка методом пузырька (C++):

Сортировка методом пузырька - C++
Всем привет. Ругается на i. Пишет Выражение должно иметь тип указателя на объект. В дополнении пишет что swap не определен. Помогите...

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

Сортировка методом пузырька - C++
пытаюсь отсортировать массив из 10000 элементов по возрастанию методом пузырька,числа рандомно заполняются.Ничего не выходит.Быть может это...

Сортировка методом пузырька - C++
добрый день по книге учу c++ и в книге был приведен пример сортировки элементов массива методом пузырька с использованием указателей ...

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

Сортировка методом пузырька - C++
Помогите пожалуйста исправить ошибки. Сортировка пузырьком многомерного массива. #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include...

3
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
28.10.2010, 20:34 #2
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
#include <iostream>
#include <conio.h>
 
void bubble(int*Arr, int size);
 
int main()
{
   int*Arr;
   int n=0;
   std::cout<<"Enter n: ";
   std::cin>>n;
   Arr=new int[n];
   for(int i=0; i<n; ++i)
      std::cin>>Arr[i];
   std::cout<<"Before sort\n";
   for(int i=0; i<n; ++i)
       std::cout<<Arr[i]<<' ';
   bubble(Arr, n);
   std::cout<<std::endl;
   std::cout<<"After sort\n";
   for(int i=0; i<n; ++i)
      std::cout<<Arr[i]<<' ';
      getch();
   return 0;
}
 
void bubble(int*Arr, int n)
{
    for(int i=0; i<n; ++i)
    {
        for(int j=i; j<n; ++j)
        {
            if(Arr[i]>Arr[j])
            {
               int temp=Arr[i];
               Arr[i]=Arr[j];
               Arr[j]=temp;
            }
        }
    }
}
0
DEMUT
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 10
28.10.2010, 20:40  [ТС] #3
Сам алгоритм выполнения задания мне помятен.
Я не могу понять почему оно не выполняется, где моя ошибка.
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
28.10.2010, 20:50 #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
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
86
87
88
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
 
int main()
{
cout << "vvedite chislo elementov massiva" << endl;
int n, z, j, k;
srand(time(0));
cin >> n;
cout << "0 - slychainoe zapolenie" << endl << "1 - zapolnenie vruchnyu" <<endl;
cin >> z;
//Г§Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* 
int i;
int * mas = new int[n];
for (i=0; i<n; i++)
{
if (z==1) 
{
cout << endl << "mas[" << i << "]=";
cin >> mas[i];
}
else if(!z)
{
mas[i]=rand()%100;
}
}
// êîëè÷åñòâî Г°Г*çëè÷Г*ûõ
k=0;
for (i=0; i<n; i++)
{
for (j=i+1;j<n;j++)
if(mas[i]==mas[j])
break;
if (j==n)
k++;
}
cout << endl << "kolichestvo razlichnyx elementov= " << k ;
// ïðîèçâåäåГ*ГЁГҐ
int max,proizvedenie;
max=0;
proizvedenie=1;
for (i=0; i<n; i++)
if(abs(mas[i])>abs(mas[max]))
max=i;
for (i=max+1; i<n; i++)
proizvedenie=proizvedenie*mas[i];
cout << endl << "proizvedenie elementov= " << proizvedenie << endl;
// ïðåîáðГ*çîâГ*Г*ГЁГҐ
i=0; j=n-1;
while(i<j)
{
while ((mas[i]<0) && (i<j)) i++;
while ((mas[j]>=0) && (i<j)) j--;
if (i<j)
{
max=mas[i];
mas[i]=mas[j];
mas[j]=max;
i++;
j--;
}
}
cout<< "Preobrazovannyi massiv" << endl;
for (i=0; i<n; i++)
cout<< mas[i] << " ";
// ñîðòèðîâêГ*
for(int i = n-1; i >= 1; i--)
{
for(int j = 0; j < i; j++)
{
if(mas[j] > mas[j+1])
{
int foo = mas[j];
mas[j] = mas[j+1];
mas[j+1] = foo;
}
}
}
cout<< "Sortirovka puzirkom - " << endl;
for (i=0; i<n; i++)
cout<< mas[i] << " ";
cin.get();
cin.get();
return 0;
}
1
28.10.2010, 20:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2010, 20:50
Привет! Вот еще темы с ответами:

Сортировка методом пузырька - C++
//--------------------------------------------------------------------------- #include &lt;conio.h&gt; #include &lt;vcl.h&gt; #include...

Сортировка методом «пузырька» - C++
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке убывания. Вывести массивы до и после...

Сортировка методом пузырька - C++
массив я задал, а вот сортировку не могу сделать(( #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; ...

Сортировка методом пузырька - C++
Приветствую всех. Нужно решить простую задачу. Есть массив из 10 элементов от 0 по 9. И в нём записаны различные числа. И их нужно...


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

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

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