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

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

06.10.2012, 15:16. Показов 5173. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите сделать три программы которые создают двумерные массивы рандомом и сортируют методом пузырька, вставки и быстрым способом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2012, 15:16
Ответы с готовыми решениями:

Сортировка в StringGrid методом пузырька или вставки
TStringGrid::Columns со TStringList, у которого есть метод Sort() мне не подходит. Нужно...

Сортировка массивов методом пузырька
Помогите, пожалуйста, доработать программу, чтобы она минимизировала кол-во полных циклов при...

Сортировка одномерных массивов методом вставки
Помогите пожалуйста. 2. Создать с помощью генератора случайных чисел массив целых чисел в...

Сортировка быстрым методом
Здравствуйте, помогите решить задачу по програмированнию, вот суть: Нужно написать програму на...

25
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 16:45 2
Поясни сортирует строки, столбцы, всю матрицу.
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 16:59  [ТС] 3
всю матрицу
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 17:04 4
У тебя какие мысли, как сделать лучше?
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 17:17  [ТС] 5
ну я делал с другом пузырьковое сортирование

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
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    const int n=10;
    const int m=15;
    int a[n][m];
    cout<<"Mac1"<<endl;
    int num=1;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            a[i][j]=rand()%100;
            cout<<a[i][j]<<"  ";
            num++;
        }
        cout<<endl;
    }
 
    for(int l=0;l<n;l++)
    {
        for(int k=0;k<m;k++)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if (i+1==n && j+1==m)
                    {
                        continue;
                    }
                    else
 
                    {
                        if(a[i][j]>a[i][j+1])
                        {
                            int t=a[i][j];
                            a[i][j]=a[i][j+1];
                            a[i][j+1]=t;
 
                        }                                       
                    }
 
                }           
            }
 
        }
 
    }
 
    cout<<"mac2"<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cout<<a[i][j]<<"  ";
        }
        cout<<endl;
    }
 
    system("PAUSE>>VOID");
    return 0;
}

и я хотел по другому попробовать но у меня не получается.
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 17:19 6
А как тебе вариант матрицу сохранить в массиве, отсортировать и обратно в матрицу?
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 17:30  [ТС] 7
А зачем возвращать(не понимаю как)? Лучше отдельно сортировку что бы видно и все понятно было
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 17:33 8
Так скажем не лучше. Просто обычной сортировкой, очень много вложенных циклов.
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 17:43  [ТС] 9
Ну если вы мне объясните потом как вернуть сортировку в матрицу то можно попробовать.
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 17:53 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 <iomanip>
#include <cstdlib> 
#include <ctime>  
 
void bubblesort(int matrix[][5]) 
{ 
    int k, l, i, j; 
 
    for ( k = 0; k < 5; k++) 
    { 
        for ( l = 0; l < 5; l++) 
        { 
            for ( i = 0; i < 5; i++) 
            { 
                for ( j = 0; j < 5; j++) 
                { 
                    if( i + 1 == 5 && j + 1 == 5) 
                        continue; 
                    else 
                    { 
                        if(j+1 == 5 && matrix[i][j] > matrix[i+1][0]) 
                        { 
                            int temp = matrix[i][j]; 
                            matrix[i][j] = matrix[i+1][0]; 
                            matrix[i+1][0] = temp; 
                        } 
                        else 
                        { 
                            if(matrix[i][j] > matrix[i][j+1]) 
                            { 
                                int temp = matrix[i][j]; 
                                matrix[i][j] = matrix[i][j+1]; 
                                matrix[i][j+1] = temp; 
                            } 
                        } 
                    } 
                } 
            } 
        } 
    }
}
 
int main() 
{ 
    srand((unsigned) time(0)); 
    const int size = 5; 
    int matrix[size][size]; 
    int i, j;
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++) 
        { 
            matrix[i][j] = rand() % 100; 
            if( j % size == 0)  
                std::cout << std::endl;
                std::cout << std::setw(3) << matrix[i][j]; 
        } 
        std::cout << std::endl << std::endl; 
        bubblesort(matrix);  
 
        for ( i = 0; i < size; i++) 
            for ( j = 0; j < size; j++) 
            { 
                if( j % size == 0) 
                    std::cout << std::endl; 
                std::cout << std::setw(3) << matrix[i][j]; 
            } 
            std::cout << std::endl;
 
}
1
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 18:12  [ТС] 11
Спасибо, а где же возвращение сорта в матрицу?
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 18:13 12
Здесь не надо.
1
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 18:17  [ТС] 13
а понятно

Добавлено через 3 минуты
Так а если будет возвращение то и код будет поменьше ?
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 18:24 14
Нет. Дело не в поменьше, а в том , что столько вложенных циклов уменьшают скорость.
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 18:31  [ТС] 15
ну в принципе скорость не так важна как понятность
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 18:36 16
отличие будет в одной строчке. Понятность будет такой же.
1
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 18:48  [ТС] 17
ну пузырьковое я понял, а как написать выборочное и быстрое?
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 18:51 18
Вот тут описаны сортировки Алгоритмы сортировок
1
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 23
06.10.2012, 19:31  [ТС] 19
Ок попробую сам, если что напишу.

Добавлено через 12 минут
это типа для каждого цикла свою функцию писать если вставкой?

Добавлено через 18 минут
чет не выходит у меня
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.10.2012, 19:33 20
David Sylva, зачем так все усложнять, когда можно все проще сделать.

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
#include <iostream>
#include <iomanip>
using namespace std;
 
const int M = 3;
const int N = 5;
 
void InsertSort(int *a, int n)
{
   int i, j, buf;
   for (i = 1; i < n; i++)
   {
      buf = a[i];
      j = i - 1;
      while (j >= 0 && a[j] > buf)
      {
         a[j+1] = a[j];
         j--;
      }
      a[j+1] = buf;
   }
}
 
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;
    }
    InsertSort(*a, M*N);
    cout << endl;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
            cout << setw(5) << a[i][j] << " ";
        cout << endl;
    }
    return 0;
}
2
06.10.2012, 19:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2012, 19:33
Помогаю со студенческими работами здесь

Сортировка массивов методом "пузырька"
Составить программу для сортировки методом «пузырька» массива R(20) по убыванию. Отсортировать ...

Отсортировать линейный массив методом "пузырька", методом прямой вставки
Дано линейный массив с N элементов. отсортировать его: методом &quot;пузыря&quot; (1), методом прямой вставки...

Сортировка одномерного массива методом «пузырька», выделение массивов из четных и нечетных чисел. Вычисление суммы нечетных чисел
Program Sortirovka; Uses Crt; Var a:array of integer; i,j,k,n,Sum : integer; BEGIN...

Масивы и сортировка методом обмена, методом вставки, методом выбора
Сортировку осуществить тремя способами: методом обмена. методом вставки, методом выбора.Решение...


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

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