Commit 491a3b37 by Patryk Czarnik

Zajęcia 23 stycznia - bubble_sort

parent 5ef2abd9
#include <iostream>
#include <cstdlib>
using namespace std;
void wypisz(int *t, int len) {
for(int i=0; i<len; i++) {
cout << t[i] << ", ";
}
cout << endl;
}
void wypelnij_losowo(int *t, int len, int limit) {
for(int i=0; i<len; i++) {
t[i] = rand() % limit;
}
}
void bubble_sort(int *t, int len) {
// w tej wersji wykonujemy tyle powtórzeń,
// ile jest potrzebnych w przypadku pesymistycznym
// ale czasami może to być niepotrzebna robota
int pom;
for(int runda = 1; runda < len; runda++) {
cout << "runda nr " << runda << ": ";
wypisz(t, len);
for(int i=1; i<len; i++) {
if(t[i] < t[i-1]) { // zamieniamy wartości miejscami
pom = t[i];
t[i] = t[i-1];
t[i-1] = pom;
}
}
}
}
int main() {
srand(time(nullptr));
int a[10];
wypelnij_losowo(a, 10, 100);
cout << "wersja wylosowana:\n";
wypisz(a, 10);
cout << "sortujemy...\n";
bubble_sort(a, 10);
cout << "wersja posortowana:\n";
wypisz(a, 10);
return 0;
}
/* Sortowanie to zadanie polegające na ułożeniu elementów
w kolejności uporządkowanej (np. rosnącej).
Istnieje wiele algorytmów sortowania,
które różnią się wydajnością. Są to m.in.:
- bubble sort (robimy tutaj)
- insertion sort
- merge sort
- quick sort
*/
#include <iostream>
#include <cstdlib>
using namespace std;
void wypisz(int *t, int len) {
for(int i=0; i<len; i++) {
cout << t[i] << ", ";
}
cout << endl;
}
void wypelnij_losowo(int *t, int len, int limit) {
for(int i=0; i<len; i++) {
t[i] = rand() % limit;
}
}
// Funkcja zamienia wartości dwóch zmiennych.
// Parametry są przekazywane "przez referencję".
void swap(int &x, int &y) {
int z = x;
x = y;
y = z;
}
// Funkcja wykonuje jedną rundę popraiania kolejności.
// W wyniku informuje, czy została wykonana chociaż jedna zamiana.
bool popraw(int *t, int len) {
bool czy_byla_zamiana = false;
for(int i=1; i<len; i++) {
if(t[i] < t[i-1]) {
swap(t[i], t[i-1]);
czy_byla_zamiana = true;
}
}
return czy_byla_zamiana;
}
void bubble_sort(int *t, int len) {
do {
cout << ": ";
wypisz(t, len);
} while(popraw(t, len));
}
int main() {
srand(time(nullptr));
int a[10];
wypelnij_losowo(a, 10, 100);
cout << "wersja wylosowana:\n";
wypisz(a, 10);
cout << "sortujemy...\n";
bubble_sort(a, 10);
cout << "wersja posortowana:\n";
wypisz(a, 10);
return 0;
}
/* Sortowanie to zadanie polegające na ułożeniu elementów
w kolejności uporządkowanej (np. rosnącej).
Istnieje wiele algorytmów sortowania,
które różnią się wydajnością. Są to m.in.:
- bubble sort (robimy tutaj)
- insertion sort
- merge sort
- quick sort
*/
#include <iostream>
#include <cstdlib>
using namespace std;
void wypisz(int *t, int len) {
for(int i=0; i<len; i++) {
cout << t[i] << ", ";
}
cout << endl;
}
void wypelnij_losowo(int *t, int len, int limit) {
for(int i=0; i<len; i++) {
t[i] = rand() % limit;
}
}
// Napisz funkcję max, która zwraca (return) największy element podanej tablicy
int max(int *t, int len) {
int max = 0;
for(int i=0; i<len; i++) {
if(t[i] > max) {
max = t[i];
}
}
return max;
}
// Jeśli jakaś liczba jest większa od "największej z dotychczasowych"
// to teraz ona staje się tą największą
// Napisz teraz funkcję min, która zwraca wartość najmniejszą.
// Teraz nie można już zacząć od 0. Zaczynamy od pierwszego elementu tablicy t[0]. Pętla może wtedy startować od t[1].
int min(int *t, int len) {
int min = t[0];
for(int i=1; i<len; i++) {
if(t[i] < min) {
min = t[i];
}
}
return min;
}
int main() {
srand(time(nullptr));
int a[10];
wypelnij_losowo(a, 10, 100);
wypisz(a, 10);
int wynik;
wynik = max(a, 10);
cout << "max: " << wynik << endl;
wynik = min(a, 10);
cout << "min: " << wynik << endl;
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment