Sortowanie przez wstawianie:
Przykładowy kod programu:
Poniższy kod opiera się na wersji algorytmu, która opiera się na 2 tablicach (podręcznik).
//SORTOWANIE przez wstawianie #include <iostream> #include <ctime> #include <cstdlib> using namespace std; const int N=200; //ilosc liczb w tablicy int a[N]; //tablica liczb do posortowania int b[N]; //tablica liczb posortowanych void wczytajDane(){ for(int i = 0; i < N; i++) a[i]=rand()%500;//losowe liczby od 0 do 499 } void pokazDane(){ for(int i = 0; i < N; i++) cout << a[i] << " "; } void sortWstawianie(){ int i, j, k, aktualna; int posortowane=0; // na początku ilość posortowanych jest 0 int pktWstawienia; //indeks miejsca wstawienia aklualnej liczby w tablicy b[] // badamy wszystkie elementy tablicy a[] for(i=0; i<N; i++){ aktualna=a[i]; //aktualna --> dla niej określamy punkt wstawienia w tablicy b[] pktWstawienia=posortowane; //domyślnie na koniec tablicy b[] //ustalenie punktu wstawienia for(j=0; j<posortowane; j++){ if(b[j]>aktualna){ pktWstawienia=j; //index pierwszego elementu w tablicy b[], który jest większy od liczby aktualnej break; } } for(k=posortowane; k>pktWstawienia; k--) b[k]=b[k-1]; //przesunięcie elementów tablicy b[pktWstawienia]=aktualna; // wstawienie aktualnej liczby posortowane++; //zwiększenie ilości posortowanych } for(i=0; i<N; i++) a[i]=b[i]; //przepisanie elementów tablicy b[] do tablicy a[] } main () { srand(time(NULL)); cout << "\nliczby do posortowania:\n"; wczytajDane(); pokazDane(); sortWstawianie(); cout << "\nliczby posortowane rosnaco:\n"; pokazDane(); return 0; }
Dodatki:
Insert-sort with Romanian folk dance
Poniższy film opiera się na wersji algorytmu, która wykorzystuje JEDNĄ tablicę.
Wykorzystanie kodu:
- Powyższy kod można wykorzystać w środowisku Dev C++ lub innym. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
- Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh