Sortowanie bąbelkowe

Algorytm sortowania bąbelkowego polega na tym, że w każdym przejściu pętli z instrukcją porównawczą (większe lub mniejsze) porównywane są ze sobą dwa kolejne elementy i w wyniku testu porównania dochodzi do zamiany miejsc (indeksu pozycji w zbiorze). Element o największej wartości będzie się przemieszczać na przykład na ostatnią pozycję jeżeli sortujemy od najmniejszego do największego (czyli od a do z).

Przesuwanie się największego elementu w zbiorze przypomina ruch bąbelka w szklance napoju gazowanego- stąd nazwa algorytmu. Algorytm ten nie sprawdza się przy sortowaniu dużych zbiorów- jest dość wolny.

Schemat algorytmu sortowania bąbelkowego

Schemat algorytmu sortowania bąbelkowego Visual studio C#

Kod funkcji sortującej bąbelkowo zapisany w języku C#

Wskazówka:


void sortujBabelkowo(Int32[] t,int rozmiar)
{
	for(int i=rozmiar-1;i>0;i--)
	 for(int j=0;j<i;j++)
		if (t[j] > t[j +1])
			{
				int bufor = t[j];
				t[j] = t[j + 1];
				t[j + 1] = bufor;
			}
}

Funkcja sortuje wcześniej utworzony zbiór w postaci tablicy jednowymiarowej o zadanym rozmiarze. Ciało funkcji, która tworzy taką tablicę bez zwracania uwagi na powtórzenia wygląda jak poniżej

Wskazówka:


void losujTablice(Int32[] t,int zakres)
{
	Random r=new Random();
	int i = 0;
	while (i < t.Length) {
			t[i] = r.Next(zakres) + 1;
			i++;
		  }
}

Przykładowa aplikacja utworzona w Visual Studio wygląda jak poniżej

aplikacja sortowanie bąbelkowe, Visual studio C#

Pełny kod klasy Form utworzonej formatki aplikacji sortującej bąbelkowo

Form1.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _10AlgSortBabel
{
    public partial class Form1 : Form
    {
        Int32[] tab;
        int rozmiar;

        void losujTablice(Int32[] t,int zakres)
        {
            Random r=new Random();
            int i = 0;
            while (i < t.Length) {
                    t[i] = r.Next(zakres) + 1;
                    i++;
                  }
        }

        void sortujBabelkowo(Int32[] t,int rozmiar)
        {
            for(int i=rozmiar-1;i>0;i--)
             for(int j=0;j<i;j++)
                if (t[j] > t[j +1])
                    {
                        int bufor = t[j];
                        t[j] = t[j + 1];
                        t[j + 1] = bufor;
                    }
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sortujBabelkowo(tab, rozmiar);
            //wypisz posortowaną
            //pokaz wylosowany zbior
            textBox3.Clear();
            for (int i = 0; i < tab.Length; i++)
                textBox3.AppendText(tab[i].ToString() + Environment.NewLine);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //losowanie nowej tablicy
            if (textBox1.Text.Length < 1) return;
            //wyczysc stara tablice
            if(tab!=null)Array.Clear(tab, 0, tab.Length);
            //ustaw nowy rozmiar
            rozmiar=int.Parse(textBox1.Text);
            tab=new int[rozmiar];
            //przy losowaniu ustaw zakres na 2 razy większy od rozmiaru
            losujTablice(tab,2*rozmiar);
            //pokaz wylosowany zbior
            textBox2.Clear();
            for (int i = 0; i < tab.Length; i++)
                textBox2.AppendText(tab[i].ToString() + Environment.NewLine);
        }
    }
}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz