Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2014, 19:55   #1
Виктор27
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 11
По умолчанию Пузырьковая сортировка.

Здравствуйте. Прошу помощи. Есть код сортировки матрицы по возростающему по строчкам. Мне надо по возростающей по столцам. Первый элемент самый маленький, последний самый большой (по столбцам). Помогите пожалуйста.
Код:
#include <iostream>
#include <iomanip>

using namespace std;

void main (void)
{
	setlocale(LC_ALL, "Rus");
	const int n = 4, m = 4;    // Размерность массива
	int c = 0;
	int mas[n][m];
	mas[0][0] = 5;
	mas[0][1] = 12;
	mas[0][2] = 7;
	mas[0][3] = 40;

	mas[1][0] = 17;
	mas[1][1] = 25;
	mas[1][2] = 18;
	mas[1][3] = 10;
	
	mas[2][0] = 20;
	mas[2][1] = 15;
	mas[2][2] = 30;
	mas[2][3] = 30;

	mas[3][0] = 16;
	mas[3][1] = 4;
	mas[3][2] = 5;
	mas[3][3] = 20;
	
	cout << "Исходный массив:" << endl << endl;
	for (int i=0; i<4; i++)
	{
		for (int j=0; j<4; j++)
		{
			cout << mas[i][j] << "\t";
		}
		cout << endl;
	}
	cout << endl << endl;

	cout << "После пузырьковай сортировки:" << endl << endl;

	for (int k=0; k<n; k++)
	{
		for (int l=0; l<m; l++)
		{
			for (int i=0; i<n; i++)
			{
				for (int j=0; j<m; j++)
				{
					if (i+1 == n && j+1 == m)
					{
						continue;
					}
					else
					{
						if (j+1 == n && mas[i][j] > mas[i+1][0])
						{
							int t = mas[i][j];
							mas[i][j] = mas[i+1][0];
							mas[i+1][0] = t;
							c=c+1;
						}
						else
						{
							if (mas[i][j] > mas[i][j+1])
							{
								int t = mas[i][j];
							    mas[i][j] = mas[i][j+1];
							    mas[i][j+1] = t;
								c=c+1;
							}
						}
					}
				}
			}			
		}		
	}

	for (int i=0; i<4; i++)
	{
		for (int j=0; j<4; j++)
		{
			cout << mas[i][j] << "\t";
		}
		cout << endl;
	}
	cout << endl;
	cout << "Колличество перестановок = " << c << endl << endl;
	
	system("Pause");
}

Последний раз редактировалось Stilet; 18.04.2014 в 21:35.
Виктор27 вне форума Ответить с цитированием
Старый 18.04.2014, 20:03   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Поменяй местами индексы в цикле сортировки, и будет тебе счастье
Son Of Pain вне форума Ответить с цитированием
Старый 18.04.2014, 20:07   #3
Виктор27
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 11
По умолчанию

Я менял, не помогло.

Please help.

Последний раз редактировалось Stilet; 18.04.2014 в 21:35.
Виктор27 вне форума Ответить с цитированием
Старый 18.04.2014, 21:11   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Проверяйте, будут вопросы пишите. Подставляйте свои значения и все, задача решена.
Код:
/*
	Пузырьковая сортировка (использование флага)
*/
#include <iostream>
#include <locale>

using namespace std;

void PrintArray(int *, int);
void BubbleSort(int *, int);

int main() {
	int array[] = {2, 0, 8, 6, 7, 1, 6, 5, 9, 3};
	int SIZE = sizeof(array)/sizeof(int);
	
	setlocale(0, "RUS");
	cout << endl << " ПУЗЫРЬКОВАЯ СОРТИРОВКА" << endl;
	cout << endl << " Исходный массив:\n ----------------";
	PrintArray(array, SIZE);
	BubbleSort(array, SIZE);
	cout << endl << " Отсортированный массив:\n -----------------------";
	PrintArray(array, SIZE);
	cout << endl;
	return 0;
}

/* Печать массива */
void PrintArray(int *array, int SIZE) {
	cout << endl << " ";
	for(int i = 0; i < SIZE; i++) {
		cout << array[i] << " ";
	}
	cout << endl;
	return;
}

/* Пузырьковая сортировка */
void BubbleSort(int *array, int SIZE) {
	for(int i = SIZE-1; i > 0; i--) {
	bool flag = false;
	for(int j = 0; j < i; j++) {
		if(array[j] > array[j+1]) {
			int temp = array[j];
			array[j] = array[j+1];
			array[j+1] = temp;
			flag = true;
			}
		}
	if(!flag)	// Если перестановок не было, завершить сортировку
		break;
	}
	return;
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пузырьковая сортировка массива. Gtnz8 Помощь студентам 6 30.09.2013 09:32
пузырьковая сортировка! sky-flame Visual C++ 1 10.10.2012 09:46
Пузырьковая сортировка dima bodnaryk C++ Builder 5 30.03.2012 16:44
Пузырьковая сортировка ts-alan Общие вопросы C/C++ 9 20.08.2010 21:15
Пузырьковая сортировка массива HeadShooTeR Помощь студентам 3 18.10.2009 14:54