algorytm.org

Implementacja w C/C++

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sortowanie przez wstawianie (insertionsort) - Implementacja w C/C++
Ocena użytkownikóww: *****  / 4
SłabyŚwietny
Nadesłany przez Mattioo, 09 lutego 2014 03:56
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

insertionsort.cpp:
// IMPLEMENTACJA SORTOWANIA PRZEZ WSTAWIANIE - INSERTIONSORT
// www.algorytm.org

#include <iostream>
// BIBLIOTEKI NIEZBEDNE DO WYPELNIENIA TABLICY PSEUDOLOSOWYMI LICZBAMI
#include <cstdlib>
#include <ctime>

using namespace std;

// DEKLARACJA FUNKCJI SORTUJACEJ TABLICE PRZYJMUJACA PARAMETRY TAKIE JAK TABLICA I LICZBA JEJ ELEMENTOW
void sort(int tab[], int w);

int main()
{
    // ZDEFINIOWANIE STALEJ 'W' ORAZ TABLICY O WIELKOSCI 'W'
    const int w = 10;
    int tab[w];
    // WYWOLANIE FUNKCJI ZAPEWNIAJACEJ LOSOWANIE ROZNYCH WARTOSCI PRZY KAZDYM URUCHOMIENIU PROGRAMU
    srand(time(NULL));
    // WYPPELNIENIE TABLICY WYLOSOWANYMI WARTOSCIAMI Z PRZEDZIALU OD 1 DO 100
    for(int i = 0; i < w; i++)
        tab[i] = 1+rand()%100;
    // WYWOLANIE ZDEFINIOWANEJ PRZEZ NAS FUNKCJI 'SORT' SORTUJACEJ ELEMENTY TABLICY
    sort(tab,w);
    // WYPISANIE POSORTOWANEJ JUZ TABLICY NA EKRAN
    for(int i = 0; i < w; i++)
        cout << tab[i] << endl;

    return 0;
}

// DEFINICJA FUNKCJI SORTUJACEJ TABLICE PRZYJMUJACA PARAMETRY: TABLICA I LICZBA JEJ ELEMENTOW
void sort(int tab[], int w)
{
    // ZADEKLAROWANIE ZMIENNEJ POMOCNICZEJ NA PRZECHOWYWANIE WARTOSCI AKTUALNEJ CYFRY
    int x,k;
    // PETLA PRZECHODZACA PO INDEKSACH OD 1 DO 'N' TABLICY CYFR
    for(int i = 1; i < w; i++)
    {
        // ZMIENNEJ POMOCNICZEJ PRZYPISUJEMY WARTOSC CYFRY O AKTUALNYM INDEKSIE
        x = tab[i];
        // SZUKAMY MIEJSCA WSROD POPRZEDZAJACYCH AKTUALNY INDEKS CYFR W KTORYM KOLEJNA Z CYFR BEDZIE WIEKSZA OD TEJ O AKTUALNYM INDEKSIE I TUZ ZA NIA WSTAWIAMY DANA CYFRE
        for(k = i-1; k >= 0; k--)
        {
            if(x < tab[k])
            {
                tab[k+1] = tab[k];
            }
            else
                break;
        }
        tab[k+1] = x;
    }
}

Dodaj komentarz