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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 21:43   #1
parkito
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 24
По умолчанию Ошибка в алгоритме

Написал вот такой усовершенствованный алгоритм сортировки пузырьком, но где-то закралась в нем ошибка, не подскажите где?
Код:
#include<iostream>
using namespace std;
int main ()
{setlocale(LC_ALL,"Rus");
int n=10,a[]={2,3,1,9,4,6,5,8,7,0},temp,flag=1,l=0,r=0;
while(flag=1)
{flag=0;
for(int j=0;j<n-1;j++)
{if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;
}
for(j=n-1;j>0;j--)
{if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j-1]=temp;
flag=1;
}
}
l=0;
r=n-1;
while(l<r)
{
	for(int j=l;j<r;j++)
	{if(a[j]>a[j+1])
	{temp=a[j];
	a[j]=a[j+1];
	a[j+1]=temp;
	r=j;
	}
	}
	for(int i=r;i<l;i--)
	{if(a[i]>a[i+1])
	{temp=a[i];
	a[i]=a[i+1];
	a[i+1]=temp;
	l=i;
	}
	
	}

}
}
}

for(int q=0;q<n;q++)
{cout<<a[q]<<endl;}
system("pause");

return 0;
}
parkito вне форума Ответить с цитированием
Старый 07.12.2011, 04:25   #2
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:
#include "stdafx.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"Rus");
	int n=10,a[]={2,3,1,9,4,6,5,8,7,0},temp,flag=1,l=0,r=0;
	
	while(flag=1)
	{
		flag=0;
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
				flag=1;
			}

			for(j=n-1;j>0;j--) // Здесь вместо j другую переменную ввести 
			{				   // Она уже есть во внешнем цикле
				if(a[j]>a[j+1])
				{
					temp=a[j];
					a[j]=a[j+1];
					a[j-1]=temp;
					flag=1;
				}
			}

			l=0;
			r=n-1;

			while(l<r)
			{
				for(int j=l;j<r;j++)	// Тоже самое...
				{
					if(a[j]>a[j+1])
					{
						temp=a[j];
						a[j]=a[j+1];
						a[j+1]=temp;
						r=j;
					}
			}


			for(int i=r;i<l;i--)
			{
				if(a[i]>a[i+1])
				{
					temp=a[i];
					a[i]=a[i+1];
					a[i+1]=temp;
					l=i;
				}
	
			}

		}
	}
}

	for(int q=0;q<n;q++)
		cout<<a[q]<<endl;

	system("pause");

return 0;
}
viron вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в алгоритме поиска murzilka6002 Общие вопросы C/C++ 15 24.11.2011 04:57
Ошибка в алгоритме слияние массивов ATAMAN200 Общие вопросы C/C++ 3 25.10.2010 20:37
Ошибка в алгоритме?Выдает ошибку после компиляции. Aerial Общие вопросы C/C++ 2 12.05.2010 16:52
Ошибка в алгоритме нахождения тройки чисел с максимальным произведением k1r1ch Паскаль, Turbo Pascal, PascalABC.NET 7 22.10.2009 22:30
Ошибка в алгоритме программы на бинарные фйлы ROD Общие вопросы C/C++ 0 15.04.2009 22:15