Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки C++


Сортировка Пузырьком C++

У сортировки “Пузырьком” самый наглядный и простой алгоритм, но однако это не делает её эффективной. Можно сказать больше – она самая долгая из всех видов сортировок. Но для начинающего программиста это очень наглядный и простой учебный пример, что бы начать её понимать. За каждый проход массива программой сравниваются два соседних элемента начиная с первого и если элемент меньше (или больше) он меняется местами с соседним. После второго прохода 2-ой элемент сравнивается с 3-им. После третьего прохода 3-й элемент сравнивается с 4-ым и д.т. После того как массив полностью пройден, начинается следующий попарный проход и так пока все элементы не окажутся расположены по возрастанию (или убыванию). Вот код данной сортировки:



#include "stdafx.h"
#include "iostream"
#include "time.h"
#include "iomanip"
#include "algorithm"

using namespace std;

void BubbleSortt(int *, int);   // объявление функции сортировки

int main()
{
setlocale(LC_ALL, "Russian");
int n; // Количество элементов массива
cout << "Введите размер массива: ";
cin >> n;
cout << endl;
cout << "Массив: " << endl;
int *mas = new int [n];
srand(time(NULL));
for (int i = 0; i < n; i++)
{
mas[i] = rand() % 200 - 100;   // заполняем массив случайными числами
cout << mas[i] << " ";   // выводим массив на экран
}
cout << "\n\n";

BubbleSort(mas, n); // вызываем функцию сортировки Вставками
cout << "Отсортированный массив: " << endl;
for (int i = 0; i < n; i++)
{
cout << mas[i] << " ";   // Вывод на экран отсортированного массива
}
cout << "\n\n";
system("PAUSE");
return 0;
}

void BubbleSort(int* sort_el, int length)   // сортировка пузырьком
{
int temp = 0;   // временная переменная, хранящая элемент массива
bool exit = false;   // болевая переменная для выхода из цикла, если массив отсортирован
while (!exit)
  {
exit = true;
for (int k = 0; k < (length - 1); k++)

if (sort_el[k] > sort_el[k + 1])
    {
temp = sort_el[k];
sort_el[k] = sort_el[k + 1];
sort_el[k + 1] = temp;
exit = false;
    }
  }
}


Результат:



<< К списку сортировок