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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.93
Ganibal012
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 15:16     Сортировка массивов методом пузырька, вставки и быстрым способом #1
Помогите сделать три программы которые создают двумерные массивы рандомом и сортируют методом пузырька, вставки и быстрым способом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 15:16     Сортировка массивов методом пузырька, вставки и быстрым способом
Посмотрите здесь:

C++ Сортировка методом Пузырька
C++ Сортировка методом пузырька
Сортировка методом пузырька C++
Сортировка методом пузырька C++
C++ Сортировка методом пузырька
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ganibal012
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 21:27  [ТС]     Сортировка массивов методом пузырька, вставки и быстрым способом #21
О спасибо, так понятней

Добавлено через 32 минуты
не получается у меня, объясните как сделать(

Добавлено через 23 минуты
одномерный получается а двух нет

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
#include <iostream>
#include <iomanip>
#include <cstdlib> 
#include <ctime> 
#include <conio.h>
 
using namespace std;
 
int n;
int a[10];
void input();
void output();
void quicksort(int left, int right);
 
int main()
{
    cout<<"quick sort "<<endl;
    input();
    cout<<"generated array"<<endl;
    output();
    cout<<"sorted process"<<endl;
    quicksort(0,n-1);
    cout<<"sorted array"<<endl;
    output();
    system("pause");
}
 
void input()
{
    srand((unsigned) (time(NULL)));
    cout<<"enter number of the components (<=10)"<<endl;
    cin>>n;
    for(int i = 0; i < n; i++)
        a[i]=rand()%30;
}
 
void output()
{
    for (int k = 0; k < n; k++)
        cout<<a[k]<<" ";
    cout<<endl;
}
 
void quicksort(int left, int right)
{
    int i,j,x,tmp;
 
    i=left;
    j=right;
    x=a[(left+right)/2];
    cout<<"left="<<left+1<<" right="<<right+1<<" x="<<x<<endl;
    do
    {
        while (a[i]<x) i++;
        while (a[j]>x) j--;
        if (i<=j)
        {
            tmp=a[i]; a[i]=a[j]; a[j]=tmp;
            i++; j--;
            output();
        }
    } 
    while(i<j);
    if (left<j) quicksort(left,j);
    if (i<right) quicksort(i,right);
}
помогите с него сделать двумерный

Добавлено через 47 минут
где все делись(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.10.2012, 21:45     Сортировка массивов методом пузырька, вставки и быстрым способом #22
вам показали два способа. осталось дело за малым - понять и сделать.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.10.2012, 21:49     Сортировка массивов методом пузырька, вставки и быстрым способом #23
Цитата Сообщение от Thinker Посмотреть сообщение
вам показали два способа. осталось дело за малым - понять и сделать.
Полностью поддерживаю предыдущего оратора, вам всё доступно объяснили и показали.
Ganibal012
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
07.10.2012, 14:00  [ТС]     Сортировка массивов методом пузырька, вставки и быстрым способом #24
Угу, спасибо вам большое)

Добавлено через 46 минут
хоть правильно начинаю ?

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
#include <iostream>
#include <iomanip>
#include <conio.h>
 
using namespace std;
 
const int M=3;
const int N=5;
 
void quickSort(int *a, long N)
{
    long i=0, j=N;
    int p,temp;
    
    p=a [N>>1];
 
    do {
        while ( a[i] < p ) i++;
        while ( a[j] > p ) j--;
 
        if (i <= j) {
            temp = a[i]; a[i]=a[j]; a[j]=temp;
            i++; j--;
        }
    } while (i<=j);
 
    if ( j > 0 ) quickSort(a, j);
    if ( N > i ) quickSort(a+i, N-i);
}
Добавлено через 13 часов 44 минуты
Не могу переделать, помогите пожалуйста.

Добавлено через 1 час 14 минут
наверное я сам с собою уже разговариваю, ну да ладно, во у меня что то получилась но коряво помогите исправить

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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
using namespace std;
 
const int M=3;
const int N=5;
 
void Random(int *a, unsigned len)
{
   srand(time(0));
   unsigned i,j;
   for (i = 0; i < len; ++i)
   {
       for (j = 0; j < len; ++j)
       {
      a[i] = rand() % (2*len);
      a[j] = rand() % (2*len);
   }
}
}
//----------------------------------------------//
// Вывод значений массива на экран
void Print(int *a, unsigned len)
{
   unsigned i,j;
   for (i = 0; i < len; ++i)
   {
       for (j = 0; j < len; ++j)
       {
      printf("%3d", a[i]);
   }
   printf("\n");
   }
}
 
void Swap(int *a, int *b)
{
   int buff = *a;
   *a = *b;
   *b = buff;
}
 
void quickSortR(int *a, int M, int N) {
// На входе - массив a[M], a[N] - его последний элемент.
 
  int i=M, j=N, x=a[(M+N)/2];       // поставить указатели на исходные места
 
  // процедура разделения
  do {
    while ( a[i] < x ) i++;
    while ( a[j] > x ) j--;
 
    if (i <= j) 
    {
        if (i < j)
            Swap(&a[i], &a[j]);
       
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( i < N ) quickSortR(a, i, N);
  if ( M < j ) quickSortR(a, M, j);
}
 
int main(int argc, char **argv)
{
   int a[10];
   
   unsigned len = sizeof(a)/sizeof(*a);
   
   Random(a, len);
   printf("a:\t");
   Print(a, len);
   quickSortR(a, 0, len-1);
   printf("sorted:\t");
   Print(a, len);
   
   getch();
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.10.2012, 14:18     Сортировка массивов методом пузырька, вставки и быстрым способом #25
А где же у вас двумерный массив? задание же с матрицей связано. Функция Random, конечно, веселенькая получилась)))

Добавлено через 11 минут
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
#include <iostream>
#include <iomanip>
using namespace std;
 
const int M = 3;
const int N = 5;
 
void QuickSort (int *a, int left, int right)
{
    int i, j, x, buf;
    i = left;
    j = right;
    x = a[(left + right) >> 1];
    do
    {
        while (a[i] < x)
           i++;
        while (x < a[j])
           j--;
        if (i <= j)
        {
            buf = a[i]; a[i] = a[j]; a[j] = buf;
            i++; j--;
        }
    } while( i <= j);
    if (left < j) QuickSort (a, left, j);
    if (right > i) QuickSort (a, i, right);
}
 
int main()
{
    int i, j, a[M][N];
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
            cout << setw(5) << (a[i][j] = rand()%20-10) << " ";
        cout << endl;
    }
    QuickSort(*a, 0, M*N - 1);
    cout << endl;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
            cout << setw(5) << a[i][j] << " ";
        cout << endl;
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 14:34     Сортировка массивов методом пузырька, вставки и быстрым способом
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Ganibal012
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
07.10.2012, 14:34  [ТС]     Сортировка массивов методом пузырька, вставки и быстрым способом #26
Я просто только начал учить с++ и получилось коряво) Спасибо вам огромное, буду больше книг читать по с++))
Yandex
Объявления
07.10.2012, 14:34     Сортировка массивов методом пузырька, вставки и быстрым способом
Ответ Создать тему
Опции темы

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