Witam.
Próbuje napisać program w C++ który stosuje sortowanie tzw. karciane.
Nie wiem czy dobrze to napisałem.
Program działa, ale męczyłem się jakiś czas.
Zawsze przypominało mi sortowanie bąbelkowe, więc nie wiem już czy udało mi się napisać sortowanie karciane.
Wszelkie uwagi będą mile widziane.
Jeśli jednak i tak zrobiłem źle to proszę o wytłumaczenie bo już nie wiem jak to inaczej ugryźć.
#include <iostream>
#include <time.h>
#include <iomanip>
#include <cstdlib>
#define ROZMIAR_TAB 50
using namespace std;
void losujLiczby(int tab[],int zakres)
{
srand(time(NULL));
for(int i=0;i<zakres;i++)
{
tab[i]=rand()%2001-1000;
for(int j=0;j<i;j++)
{
if(tab[j]==tab[i])
{
i--;
break;
}
}
}
}
int szukajNajmniejszej(int tab[], int pocz,int zakres)
{
int min=pocz;
for(int i=pocz+1;i<zakres;i++)
{
if(tab[i]<tab[min])min=i;
}
return min;
}
void sortowanie(int tab[],int rozmiar)
{
int i=0;
while(i<rozmiar)
{
swap(tab[i],tab[szukajNajmniejszej(tab,i,rozmiar)]);
i++;
}
}
void wyswietl(int tab[],int rozmiar){
for(int i=0;i<rozmiar;i++)
{
if(i%10==0)cout<<endl;
cout<<setw(7)<<tab[i];
}
}
int main(){
int tab[ROZMIAR_TAB];
losujLiczby(tab,ROZMIAR_TAB);
wyswietl(tab,ROZMIAR_TAB);
cout<<endl;
sortowanie(tab,ROZMIAR_TAB);
wyswietl(tab,ROZMIAR_TAB);
return 0;
}