Werewolf
Triediacie algoritmy - Insertion sort
by
on 05.11.2011 at 12:52 (293 Views)
Zdravím vás verný čitatelia tohto blogu. Keď že v poslednej dobe sem nikto neprispel, rozhodol som sa medzi tym ako programujem do školy a tým ako programujem do práce naprogramovať ďaľší už existujúci triediaci algoritmus zvaný Insertion sort. Idea celého sortu je nasledovná.
Idea: V i-tom kroku vybrať i-ty prvok poľa a vložiť ho medzi prvky 0,...,i-1.
Praktická implementácia v C++
Je to v podstate veľmy jednoduché. Cyklicky kontrolujem pravú a ľavú stranu od jednotlivých prvkov. Ak je prvok na pravej strane väčší tak ho nechám na pokoji, ak nie tak ho hodím na pozíciu aktuálneho prvku. Toto robím stále dokola až kým nenarazím na stav, že na pravej strane pola už nebude žiadny prvok. Dúfam, že to niekomu pomôže. Zatiaľ sa majte.Code:#include <iostream> #define ELEMENTS 6 using namespace std; void insertion_sort(int x[], int length) { int key,i; for(int j = 1; j < length; j++) { key = x[j]; i = j - 1; while(x[i] > key && i >= 0) { x[i+1] = x[i]; i--; } x[i+1] = key; } } int main() { int A[ELEMENTS] = {5, 2, 4, 6, 1, 3}; int x; cout << "NON SORTED LIST:" << endl; for(x = 0; x < ELEMENTS; x++) { cout << A[x] << endl; } insertion_sort(A, ELEMENTS); cout << endl << "SORTED LIST" << endl; for(x = 0; x < ELEMENTS; x++) { cout << A[x] << endl; } return 0; }



Email Blog Entry