Werewolf

Triediacie algoritmy - Insertion sort

Rate this Entry
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++

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;
}
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.
Categories
Návody , C/C++

Comments