Difference between revisions 352352 and 372222 on plwikisource{{Nagłówek |tytuł=Sortowanie bąbelkowe |sekcja=Kod źródłowy |adnotacje={{Wikipedia|strona=Sortowanie bąbelkowe|dopełniacz=Sortowanie bąbelkowe}} }} {{Spis treści}} ==BASH== * <tt>$lz</tt> - ilość liczb do posortowania * <tt>$tab[]</tt> - tablica elementów ciągu * <tt>$tmp</tt> - zmienna pomocnicza <source lang="bash"> for(( i=1 ; $i < $lz ; i++ )) ; do for(( j=$(($lz-1)) ; $j >= $i ; j-- )); do if [ ${tab[j-1]} -gt ${tab[j]} ]; then tmp=${tab[j-1]} tab[j-1]=${tab[j]} tab[j]=$tmp fi done done </source> ==C== Wersja klasyczna: <source lang="C"> void bubblesort(int table[], int size) { int i, j, temp; for (i = 0; i<size; i++) for (j=0; j<size-1-i; j++) { if (table[j] > table[j+1]) { temp = table[j+1]; table[j+1] = table[j]; table[j] = temp; } } } </source> Wersja z zapamiętaniem czy dokonano zamiany: * <tt>tab[]</tt> - tablica elementów ciągu np. o indeksach od 0 do 99 * <tt>tmp</tt> - zmienna pomocnicza o formacie elementu tablicy <tt>tab[]</tt> * <tt>change</tt> - zmienna logiczna <source lang="C"> typedef int TYP void bubblesort( TYP a[], int n ) { int i,j; TYP tmp; int change; for (i=0; i<n-1; ++i) { change=0; for (j=0; j<n-1-i; j++) { if (a[j+1] < a[j]) //porównanie sąsiądów { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; //wypchanie bąbelka change=1; } } if(!change) break; // nie dokonano zmian - koniec! } } </source> Wersja z zapamiętaniem miejsca ostatniej zamiany: <source lang="C"> void bubblesortlastchange(int table[], int size) { int i, j, temp, swapped, loop; swapped = size; for (i = 0; i<size; i++) { loop = swapped; for (j=0; j<loop; j++) { if (table[j] > table[j+1]) { swapped = j+1; temp = table[j+1]; table[j+1] = table[j]; table[j] = temp; } } } } </source> ==C++== <!-- Przepisany na C++ pseudokod z angielskiej Wikipedii --> <source lang="Cpp"> template <class T> void bubble_sort(T* tab, int n) { bool swapped; // Czy zamieniono w ostatnim obrocie? do { swapped = false; for (int i = 0; i < n - 1; ++i) { if (tab[i] > tab[i + 1]) { swap(tab[i], tab[i + 1]); swapped = true; } } } while (swapped); } </source> ==C# (bez znacznika zmiany ''change'')== <source lang="Csharp"> public static void BubbleSort(IComparable[] a) { int n = a.Length; for(int i = 1; i < n; ++i) for(int j = n - 1; j >= i; j--) if(a[j - 1].CompareTo(a[j]) > 0) { IComparable x = a[j - 1]; a[j - 1] = a[j]; a[j] = x; } } </source> ==C# (inny przykład)== <source lang="Csharp"> public static void Swap(int[] ar, int first) { int hold = ar[first]; ar[first] = ar[first + 1]; ar[first + 1] = hold; } public static void BubbleSort(int[] ar) { for (int pass = 1; pass < ar.Length; pass++) for (int i = 0; i < ar.Length - 1; i++) if (ar[i] > ar[i + 1]) Swap(ar, i); } </source> ==PHP== <source lang="PHP"> $a = array (3, 7, 14, 1, 20, 14, 15); //Utworzenie tablicy $n = count($a); //Zliczenie elementów tablicy do zmiennej $n for ($i = 1; $i < $n; $i++) for ($j = $n - 1; $j >= $i; $j--) if ($a[$j - 1] > $a[$j]) //Porównanie sąsiednich elementów tablicy list($a[$j - 1], $a[$j]) = array($a[$j], $a[$j - 1]); //Zamiana miejscami dwóch elementów tablicy </source> ==Pascal== <source lang=Pascal>Const numbers = 6; // ilość sortowanych komórek w tablicy Type table = Array[1..numbers] Of Integer; Var counter : Integer; liczby : table; Procedure bubble_sort(); Var check, memory, run : Integer; // ilość sprawdzeń w przebiegu, komórka pamięci, ilość przebiegów Begin For run := 1 To numbers - 1 Do Begin check := numbers - run; For counter := 1 To check Do If liczby[counter] > liczby[counter + 1] Then Begin memory := liczby[counter]; liczby[counter] := liczby [counter + 1]; liczby[counter + 1] := memory; End; End; End;</source> ==Python== <source lang="Python"> do_posortowania = [10, 2, 5] # ustalenie elementów listy do posortowania def sortuj(ilosc, lista=[]): # *ilosc* - ilość elementów do posortowania; *lista* - lista elementów zmieniono = True while zmieniono == True:: # warunek pętli gwarantuje ukończenie sortowania zmieniono = False for k in range(ilosc - 1): if lista[k] > lista[k + 1]: # porównanie elementów listy lista[k], lista[k + 1] = lista[k + 1], lista[k] # zamiana elementów zmieniono = True n = len(do_posortowania) # zapisanie ilości elementów listy do zmiennej posortowane = sortuj(n, do_posortowania) # zapisanie wyniku działania funkcji do zmiennej </source> ==PL/SQL== * <tt>TAB()</tt> - zmienna tablicowa indeksowana zawierająca elementy ciągu * <tt>X</tt> - zmienna pomocnicza o formacie elementu tablicy <tt>TAB()</tt> <source lang='plsql'> FOR I IN 1..TAB.COUNT-1 LOOP FOR J IN REVERSE I+1..TAB.COUNT LOOP IF TAB(J-1)>TAB(J) THEN X:=TAB(J); TAB(J):=TAB(J-1); TAB(J-1):=X; END IF; END LOOP; END LOOP; </source> ==Sortowanie bąbelkowe mieszane (''shuttle sort'', ''cocktail sort'') w C#== <source lang="Csharp"> public static void ShuttleSort(IComparable[] a) { int l = 1; int p = a.Length - 1; int k = p; do { for(int j = p; j >= l; j--) if(a[j - 1].CompareTo(a[j]) > 0) { IComparable x = a[j - 1]; a[j - 1] = a[j]; a[j] = x; k = j; } l = k + 1; for(int j = l; j <= p; j++) if(a[j - 1].CompareTo(a[j]) > 0) { IComparable x = a[j - 1]; a[j - 1] = a[j]; a[j] = x; k = j; } p = k - 1; } while (l < p); } </source> == Java == <source lang="java"> public void bubbleSort(Integer[] a) { int size = a.length - 1; for (int i = 0; i < a.length - 1; i++) { for (int j = 0; j < size; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } size--; } } </source> == Java (minimalizacja LOC) == <source lang="java"> public void bubbleSort(Integer[] a) { for (int i = 0, size = a.length - 1; i < a.length - 1; i++, size--) { for (int j = 0; j < size; j++) for (int temp = a[j]; a[j] > a[j + 1]; a[j] = a[j + 1], a[j + 1] = temp) ; } } </source> [[Kategoria:Kody źródłowe]] All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://pl.wikisource.org/w/index.php?diff=prev&oldid=372222.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|