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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2012, 13:40   #1
Alex_Dep
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 26
По умолчанию не могу вспомнить код сортировки пузырьком

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

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include "windows.h"
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;

struct w 
{
char fam[30]; 
char gor[30];
char ul[30];
int dom;
int kw;
float c;
};

void main()
{ 
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "rus");

w *tab,*ptr,temp;
int size = 0,i = 0,n=0;

cout<<"Vvedite kolichestvo chelovek: ";
cin >> size;

tab = new w[size];

ptr = tab;

i = 0;
	while(i<size)
{
i++;
cout<< "Vvedite familiy: ";
cin>>ptr->fam;
	if(ptr->fam == NULL)
{
	break;
}

cout<<"Vvedite gorod: ";
cin>>ptr->gor;
cout<<"Vvedite ulicu: ";
cin>>ptr->ul;
cout<<"Vvedite dom: ";
cin>>ptr->dom;
cout<<"Vvedite kwart: ";
cin>>ptr->kw;

ptr++;
}
cout<<"Таблица: \n";
cout<<"фамилия -- город -- улица -- дом -- квартира";
i = 0;
ptr = tab;
while(i<size)
{
printf("\n");
printf("%2s",ptr->fam);
printf("%10s",ptr->gor);
printf("%10s",ptr->ul);
printf("%10d",ptr->dom);
printf("%10d",ptr->kw);
printf("\n");
ptr++;
i++;
}

system ("pause");
}
Помогите отсортировать методом пузырька в алфавитном порядке по городу.

Последний раз редактировалось ACE Valery; 26.02.2012 в 16:07.
Alex_Dep вне форума Ответить с цитированием
Старый 27.02.2012, 14:27   #2
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию код пузырьковой сортировки

Это я писал на flash as3.0, пузырьковую сортировку.
Смысл думаю понятен. Замените var - объявление переменной temp
Можно вообще без темповой переменной если использовать сдвиг.
Код:
while(--len>=0)
{
	for(j=0;j<len;j++)
	{
	if(myArray[j]>vvmArray[j+1])
		{
		var  temp:int=myArray[j];
		myArray[j]=myArray[j+1];
		myArray[j+1]=temp;
		}
							
	}
		
}

Последний раз редактировалось ACE Valery; 27.02.2012 в 15:32.
vvmcpp вне форума Ответить с цитированием
Старый 10.03.2014, 20:23   #3
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Как-то так:

Код:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int  len=10;
    int myArray[]={1,2,4,2,4,1,7,0,1,8};
    
    
    
    // вывод массива 
    
    cout<<"Before sorting ";
    for(int i=0;i<len;i++)
         cout<<myArray[i];
    
    cout<<endl;
    
    
    while(--len>=0)
            {
            	for(int j=0;j<len;j++)
            	{
            	if(myArray[j]>myArray[j+1])
            		{
                        // обмен из STD
                         // std::swap(myArrayToSort[j],myArrayToSort[j+1]); 
                          
                          
         // можно обменять так, но так медленно и лишняя переменная temp
            		int temp=myArray[j];
            		myArray[j]=myArray[j+1];
            		myArray[j+1]=temp;
            		 
            		}
            							
            	}
            		
            }
// мы меняли len его заново нужно установить в количество элементов
len=10;


 // вывод массива 
 cout<<"After sorting ";
 for(int i=0;i<len;i++)
      cout<<myArray[i];
    
    cout<<endl;
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}
Но в вашем случае наверное лучше использовать алгоритм из STD,
чтобы не изобретать велосипед.

Последний раз редактировалось vvmcpp; 10.03.2014 в 20:28. Причина: дополнение
vvmcpp вне форума Ответить с цитированием
Старый 25.02.2016, 20:21   #4
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Вот еще пузырьковая сортировка с помощью шаблона.
Написал сортировку вектора по возрастающей и по убывающей.
Можно сортировать массив, но его я предварительно в вектор заталкиваю.

Код:
#include <iostream>
#include <iterator>
#include <vector>

#include <cstdlib> // содержит srand() и rand() для GNU компилятора поставить опцию -std=gnu++11

/*
  vvmcpp
*/
using namespace std;

// пузырькая сортировка шаблон сортирует вектор
// сортировка по возрастающей
template <typename T >
void bubble_sort_to_big( T &a )
    {
        for( typename T::size_type i = 0; a.size() && i < a.size() - 1; ++i )
        {
            for( typename T::size_type j = i; j + 1 > 0; --j )
            {
                if( a[j] > a[j+1] )
                    std::swap( a[j], a[j+1] );
            }
        }
    }

template <typename T >
void bubble_sort_to_small( T &a )
    {
        for( typename T::size_type i = 0; a.size() && i < a.size() - 1; ++i )
        {
            for( typename T::size_type j = i; j + 1 > 0; --j )
            {
                if( a[j] < a[j+1] )
                    std::swap( a[j], a[j+1] );
            }
        }
    }


/*показать вектор */
void show_vector( vector<int>&a) // для вывода вектора
    {
        for (vector<int>::iterator it = a.begin() ; it!=a.end() ; ++it)
            cout<<*it<<" "; // выводим седержимое итератора в поток cout
    }

int main()
{

vector<int> vecInt;  // тут мы создали вектор целых с именем vecInt
vecInt.push_back( 170 );
vecInt.push_back( 1100 );
vecInt.push_back( 134 );
vecInt.push_back( 123 );
vecInt.push_back( 112 );
vecInt.push_back( 112 );

cout <<" vector before sorting = "<< endl;
show_vector(vecInt); // посмотреть до сортировки

bubble_sort_to_big( vecInt ); // пузырим вектор
cout << endl<<endl;

cout <<" vector after sorting = "<< endl;
show_vector(vecInt); //посмотреть после сортировки


// готовим массив к пузырению, иначе он почему-то не пузырится без вектора
   int n = 20;
int*a = new int [n] ; // одномерный динамический массив ;

for(int i=0;i<n;i++) //заполнить массив псевдо случайным
    {
        a[i] = rand();
    }


vector<int> v1; // вектор v1
for(int i=0;i<n;i++) // затолкать массив в вектор
    v1.push_back(a[i]);

bubble_sort_to_big(v1); //сортируем вектор пузырями

cout<<endl;
cout<<endl<<"array a[] =" <<endl;

for(int i=0;i<n;i++) //смотрим массив
    {
        cout<<a[i]<<" ";
    }
cout<<endl;
cout<<endl<<"vector v1 = " <<endl;


show_vector(v1); // смотрим вектор после пузырения

bubble_sort_to_small(v1);

cout<<endl;
cout<<endl<<"vector after to small v1 = " <<endl;
show_vector(v1);
delete a; // удалить указатель на массив
    return 0;
}
vvmcpp вне форума Ответить с цитированием
Старый 27.02.2016, 18:49   #5
GulyaiVasko77
 
Регистрация: 24.02.2016
Сообщений: 2
По умолчанию

Спасибо, очень полезно.
GulyaiVasko77 вне форума Ответить с цитированием
Старый 29.02.2016, 18:35   #6
alexeiabasov
Новичок
Джуниор
 
Аватар для alexeiabasov
 
Регистрация: 29.02.2016
Сообщений: 4
По умолчанию

может кто напомнит сортировку вставками? вроде она схожа с пузырьком
Enegry=Milk*Coffee^2
alexeiabasov вне форума Ответить с цитированием
Старый 29.02.2016, 21:53   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

в 21 веке, когда интернетами заполнен воздух, держать алгоритмы в памяти - это моветон.
Цитата:
может кто напомнит сортировку вставками?


Цитата:
не могу вспомнить код сортировки пузырьком
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 29.02.2016 в 21:58.
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7 - нужно проверить исходный код сортировки таблицы. raymond100 Помощь студентам 0 21.12.2011 20:50
Метод сортировки пузырьком(помогите обнаружить ошибки) Ker_33rus Общие вопросы C/C++ 5 04.11.2009 15:34
Код сортировки чисел medved6216 Помощь студентам 5 28.10.2009 12:07
Помогите разобраться в реализации поразрядной сортировки(код внутри) CooCkoo Помощь студентам 0 15.06.2009 23:52
Народ, а есть другой алгоритм сортировки ПУЗЫРЬКОМ? Алексей_xXx Помощь студентам 4 27.05.2009 21:03