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

проблемы с сортировкой пузырьком - C++

Войти
Регистрация
Восстановить пароль
 
bubliq
 Аватар для bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 17
10.03.2013, 10:51     проблемы с сортировкой пузырьком #1
собственно сабж
проблема заключается в том, что программа сортирует ЧАСТЬ массива. Допустим, надо отсортировать каждый столбец по уменьшению значения суммы цифр каждого элемента. Так программа правильно отсортировывает 14 элементов из 16, а 2 стоят в неправильном порядке. Не могу понять, наверное где-то в цикле ошибка. Помогите, люди!

Код
// moiproject.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "iostream"
#include <time.h>

using namespace std;
int mas[100][100];
int i,j,k,n,m,l;
int arr[100][100];
int srav1=0;
int per1=0;
int Sum ( int N )
{
	int d, sum = 0;
	while ( N != 0 )
	{
		d = N % 10;
		sum = sum + d;
		N = N / 10;
	}
	return abs(sum);
}

int _tmain(int argc, _TCHAR* argv[])
{
cout<< ("Vvedote strok:\n");
	scanf("%4i",&m);//кол-во строк
	cout<< ("Vvedote stolbcov:\n");
	scanf("%4i",&n);// кол-во столбцов
	
	 srand(time(0));
	 for (i=0; i<m; i++) 
	{
		for (j=0; j<n; j++)
		{

			mas[i][j]=rand()%99-50; 
			
		}
	}
	 //Заполняем массив arr данными из mas
	for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			arr[i][j]=mas[i][j];
		}
	}

  for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			printf("%4i", arr[i][j]);
		}
		cout<<"\n";
	}
	cout<<"\n";
   printf("_____________________________\n");
	for (j=0 ; j<n; j++)//j-stolbec//
		{
		for (k=0 ; k<m-1; k++)//i-строчка//
		{
		  for (i=0; i<m-k-1; i++)
			{
				if (Sum(arr[i][j])<(Sum(arr[i+1][j])))
				{
					int temp=arr[i][j];
					arr[i][j]=arr[i+1][j];
					arr[i+1][j]=temp;
					per1++;
					l++;
					
				}
             srav1++;
			
		  }
		if (l==0) 
		{break;}
		l=0;
		l--;
		}
	l=k;
	}
	for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			printf("%4i", arr[i][j]);
		}
		cout<<"\n";
	}
	cout<<"\n";
	printf("Kol-vo perestanovok - ");
	printf("%i\n",per1);
	printf("Kolitchstvo sravnenii- ");
	printf("%i\n",srav1);
system("pause");
	}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 10:51     проблемы с сортировкой пузырьком
Посмотрите здесь:

C++ траблы с сортировкой
C++ Проблемы с "Быстрой сортировкой"
Не понятно с сортировкой! C++
C++ Проблемы с поразрядной сортировкой msd
C++ Сортировка пузырьком
Цикл с сортировкой C++
Проблемы с быстрой сортировкой C++
Сортировка пузырьком C++
Сравнить сортировку пузырьком с сортировкой подсчетом C++
C++ Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором
Сортировка пузырьком C++
C++ Непонятки с сортировкой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
10.03.2013, 11:12     проблемы с сортировкой пузырьком #2
Цитата Сообщение от bubliq Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
for (k=0 ; k<m-1; k++)//i-строчка//
        {
          for (i=0; i<m-k-1; i++)
            {
                if (Sum(arr[i][j])<(Sum(arr[i+1][j])))
                {
                    int temp=arr[i][j];
                    arr[i][j]=arr[i+1][j];
                    arr[i+1][j]=temp;
                    per1++;
                    l++
По моему Пузырёк
C++
1
2
3
for (k=0 ; k<m; k++)//i-строчка//
        {
          for (i=m-1; i>k; i--)
bubliq
 Аватар для bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 17
10.03.2013, 11:24  [ТС]     проблемы с сортировкой пузырьком #3
Да даже если так то все равно неправильно сортирует
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
10.03.2013, 11:37     проблемы с сортировкой пузырьком #4
Цитата Сообщение от bubliq Посмотреть сообщение
Да даже если так то все равно неправильно сортирует
Твой злодей:
C++
1
2
3
4
5
6
 if (l==0) 
        {break;}
        l=0;
        l--;
        }
    l=k;
bubliq
 Аватар для bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 17
10.03.2013, 11:47  [ТС]     проблемы с сортировкой пузырьком #5
да, кстате, ты оказался прав, но тогда мне надо как то подсчитывать сравнения
Yandex
Объявления
10.03.2013, 11:47     проблемы с сортировкой пузырьком
Ответ Создать тему
Опции темы

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