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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 16:27   #1
ХардХэви
 
Регистрация: 15.01.2013
Сообщений: 5
Восклицание Сортировка массива методом пузырька

Доброго времени суток всем посетителям данной темы!У меня зачет по одному предмету, там преподаватель любит С++ очень, а я там не шарю..Надо написать программу, которая сортировала бы массив методом пузырька.Желательно небольшую и простенькую.И если можно объяснить свои действия.Заранее благодарен.Оу, я наверное не грамотен, но надо ее реализовать на Borland C++.
ХардХэви вне форума Ответить с цитированием
Старый 02.06.2013, 16:31   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

В википедии есть пример реализации ФУНКЦИИ, которая выполняет сортировку методом пузырька:
Код:
for (int i=n-1;i>0;i--)
  {
    for (int j=0;j<i;j++)
      {
        if(a[j]>a[j+1])
          {
            int tmp=a[j];
            a[j]=a[j+1];
            a[j+1]=tmp;
          }
     }
}
n - размер массива.
Igor95 вне форума Ответить с цитированием
Старый 02.06.2013, 16:32   #3
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
            int tmp=a[j];
            a[j]=a[j+1];
            a[j+1]=tmp;
Здесь происходит обмен значений
Igor95 вне форума Ответить с цитированием
Старый 02.06.2013, 17:20   #4
ХардХэви
 
Регистрация: 15.01.2013
Сообщений: 5
По умолчанию

А полностью программа от начала до конца как должна выглядеть?С библиотеками и функцией main().Этот кусочек я находил, а простенькой рабочей проги - нет..
ХардХэви вне форума Ответить с цитированием
Старый 02.06.2013, 20:09   #5
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Вот:

Код:
#include <iostream>

int main()
{

	using namespace std; //using names from the standard namespace

	const int MAX_LENGTH = 100; //defines maximal lengh of the array
	int i, j, n;
	int arr[ MAX_LENGTH ];
	cout << "How many numbers do you want to enter: ";
	cin >> n;
	//checking if the amount is correct
	while ( n > MAX_LENGTH || n <= 0)
	{
		cout << "The entered value does not match the required one. /n Re-enter: ";
		cin >> n;
	}
	//filling the array
	for ( i = 0; i < n; i++ )
	{
		cout << "Enter value #" << i + 1 << ": ";
	    cin >> arr[ i ];
		cout << endl;
    }

	//outputing the array
	for ( i = 0; i < n; i++ )
		cout << arr[ i ] << " ";
	//using bubble sort
    for ( i = n-1;i>0;i-- )
    {
      for ( j = 0; j < i ;j++ )
      {
        if( arr[ j ]>arr[ j+1 ] )
          {
            int tmp=arr[ j ];
            arr[ j ]=arr[ j+1 ];
            arr[ j+1 ]=tmp;
          }
       }
    }

	cout << endl << "The sorted arrary: " << endl;
    //outputing the array
	for ( i = 0; i < n; i++ )
		cout << arr[ i ] << " ";

	system("pause");
	return 0;
}
Igor95 вне форума Ответить с цитированием
Старый 03.06.2013, 10:03   #6
ХардХэви
 
Регистрация: 15.01.2013
Сообщений: 5
По умолчанию

Так, как оно у вас выдает море ошибок + не задержит результат на экране(Я предполагаю, что тут я неправ, ибо команда "пауза системы" мне неизвестна).Я подправил, чуточку переделал, но оно все равно не выводит готовый(упорядоченный) массив на экран.


#include <iostream>
#include <conio.h>

int main()
{



const int MAX_LENGTH = 100; //defines maximal lengh of the array
int i, j, n;
int arr[ MAX_LENGTH ];
cout << "How many numbers do you want to enter: ";
cin >> n;
//checking if the amount is correct
while ( n > MAX_LENGTH || n <= 0)
{
cout << "The entered value does not match the required one. /n Re-enter: ";
cin >> n;
}
//filling the array
for ( i = 0; i < n; i++ )
{
cout << "Enter value #" << (i + 1) << ": ";
cin >> arr[ i ];
cout << endl;
}

//outputing the array
for ( i = 0; i < n; i++ )
cout << arr[ i ] << " ";
//using bubble sort
for ( i = n-1;i>0;i-- )
{
for ( j = 0; j < i ;j++ )
{
if( arr[ j ]>arr[ j+1 ] )
{
int tmp=arr[ j ];
arr[ j ]=arr[ j+1 ];
arr[ j+1 ]=tmp;
}
}
}

cout << endl << "The sorted arrary: " << endl;
//outputing the array
for ( i = 0; i < n; i++ )
cout << arr[ i ] << " ";


return 0;
getch();
}
ХардХэви вне форума Ответить с цитированием
Старый 03.06.2013, 12:16   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

ХардХэви, во-первых, используйте кнопочку Решетка # для оформления кода. Во-вторых, любой код после return не выполняется.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 03.06.2013, 14:07   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Не мучайте людей ХардХэви . Думаю этот код вам поможет.
Код:
/*
	Метод пузырьковой сортировки
*/
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
	int mass[] = {2, 4, 1, 0, 9, 6, 5, 5, 3, 8};	// Исходный массив
	int tmp;
	int size = 0;
	
	system("chcp 1251 > nul");
	
	size = sizeof(mass)/sizeof(int);
	// Вывод исходного массива
	cout << "\n Исходный массив:" << endl;
	for(int i = 0; i < size; i++)
		cout << " " << mass[i];
	cout << endl;
	
	// Сортировка
	for(int i = 0; i < size - 1; i++) 		// i - номер прохода
    {            
        for(int j = 0; j < size - 1; j++) 	// внутренний цикл прохода
        {     
            if (mass[j + 1] < mass[j]) 
            {
                tmp = mass[j + 1]; 
                mass[j + 1] = mass[j]; 
                mass[j] = tmp;
            }
        }
    }
	
	// Вывод результата
	cout << "\n Результат сортировки:" << endl;
	for(int i = 0; i < size; i++)
		cout << " " << mass[i];
	cout << endl;

	system("pause");
	return 0;
}
И кстати BDA прав....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 03.06.2013, 18:23   #9
ХардХэви
 
Регистрация: 15.01.2013
Сообщений: 5
По умолчанию

Не знаю что и чего, ваши программы не пробовал - нашел понятную себе.Благодарю всех за помощь, и вдруг кому-то надо будет простенькое , вот:

#include "iostream.h"
#include "stdio.h"

void bubbleSort(int array[], int col){
int temp=0;
for (int i=1; i<col ; i++){
for (int j=0; j<col-i; j++){
if (array [j]>array [j+1]){
temp=array[j];
array [j]=array [j+1];
array [j+1]=temp;
}
}
}
}

void main(){
int i, size;
int *array;
cout << "Bubble Sort.\nEnter the number of digits in an array: ";
cin >> size;
array = new int[size];
cout << "Enter " << size << " elements down.Press [Enter] to continue. ";
for ( i = 0; i < size; i ++ ){
cin >> array[i];
}

bubbleSort( array, size );

cout << "Your array after sorting: ";
for ( i = 0; i < size; i ++ ){
cout << array[i] << " ";
}
cout << "\nPress \"Enter\" to continue..." << endl;
getchar();
}
ХардХэви вне форума Ответить с цитированием
Старый 03.06.2013, 18:24   #10
ХардХэви
 
Регистрация: 15.01.2013
Сообщений: 5
По умолчанию

Не знаю что и чего, ваши программы не пробовал - нашел понятную себе.Благодарю всех за помощь, и вдруг кому-то надо будет простенькое , вот:

#include "iostream.h"
#include "stdio.h"

void bubbleSort(int array[], int col){
int temp=0;
for (int i=1; i<col ; i++){
for (int j=0; j<col-i; j++){
if (array [j]>array [j+1]){
temp=array[j];
array [j]=array [j+1];
array [j+1]=temp;
}
}
}
}

void main(){
int i, size;
int *array;
cout << "Bubble Sort.\nEnter the number of digits in an array: ";
cin >> size;
array = new int[size];
cout << "Enter " << size << " elements down.Press [Enter] to continue. ";
for ( i = 0; i < size; i ++ ){
cin >> array[i];
}

bubbleSort( array, size );

cout << "Your array after sorting: ";
for ( i = 0; i < size; i ++ ){
cout << array[i] << " ";
}
cout << "\nPress \"Enter\" to continue..." << endl;
getchar();
}
ХардХэви вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива методом пузырька в несколько потоков rostik123 Общие вопросы C/C++ 7 13.10.2012 12:09
Сортировка массива методом "пузырька" Loreena.J Помощь студентам 3 11.10.2012 13:53
Сортировка массива методом пузырька SashaBogush Помощь студентам 0 11.08.2012 15:08
Сортировка массива методом пузырька bonjovi Паскаль, Turbo Pascal, PascalABC.NET 8 30.01.2012 20:23
VBA. Сортировка массива методом пузырька divine_excuse Помощь студентам 1 29.12.2011 00:05