Písemka

Napište funkci, které dostane pole čísel a setřídí je pomocí Bubblesortu.

Ukázkové řešení - Javascript

// všem polím v dokumentu přidáme novou funkci
Array.prototype.bubblesort = function() {
  var sorted = false
  while (!sorted) {
    sorted = true
    for (var i = 1; i < this.length; i++) {
      if (this[i] < this[i-1]) {
        var tmp = this[i];
        this[i] = this[i-1];
        this[i-1] = tmp;
        sorted = false;
      }
    }
  }
}

// jednomu konkrétnímu tlačítku nastavíme funkci při události kliknutí
document.getElementById("tlacitko").addEventListener("click", function() {
  var pole = document.getElementById("pole");
  var arr = eval(pole.value);
  arr.bubblesort();
  pole.value = "["+arr.toString()+"]";
  return false;
});

Spustitelná ukázka - Javascript

Písemka - bonus

Napište funkci, která dostane pole a utřídí ho přímým výběrem.

Ukázkové řešení - C++

#include <stdio.h>

void selectionsort(int *pole, int delka) {
	// Procházíme pole od začátku a necháváme ho za sebou utříděné
	for (int i = 0; i < delka; i++) {
		int nejmensi = i;
		// Najdeme index nejmenšího prvku ze zbytku pole
		for (int j = i+1; j < delka; j++) {
			if (pole[j] < pole[nejmensi])
				nejmensi = j;
		}
		if (nejmensi != i) {
			// Dáme nejmenší prvek ze zbytku pole na i-tou pozici
			int tmp = pole[i];
			pole[i] = pole[nejmensi];
			pole[nejmensi] = tmp;
		}
	}
}
int main() {
	int pole[] = {13, 12, 16, 22, 9, 11, 19, 22, 2, 7, 14, 19, 3, 6, 23, 27, 2, 9, 2, 17};
	int delka = sizeof(pole)/sizeof(int);
	selectionsort(pole, delka);
	for (int i=0; i<delka; i++)
		printf("%i ", pole[i]); // Rychlejší obdoba cout << pole[i];
	printf("\n"); // Rychlejší obdoba cout << endl;
}