Algorithmen_Datenstrukturen/Uebung 1/Algorithms.h

63 lines
1.3 KiB
C++

#pragma once
#include "Sortiment.h"
#include "Ware.h"
#include <algorithm>
void bubbleSort(Ware *waren[10]) {
for (int n = 10; n > 1; n--) {
for (int i = 0; i < n - 1; i++) {
if (waren[i]->getGewicht() > waren[i + 1]->getGewicht()) {
std::swap(waren[i], waren[i + 1]);
}
}
}
}
void insertionSort(Ware *waren[10], int sortby) {
if (sortby == 0) {
for (int i = 1; i < 10; i++) {
int j = i;
while (j > 0 &&
waren[j - 1]->getVerkaufspreis() > waren[j]->getVerkaufspreis()) {
std::swap(waren[j - 1], waren[j]);
j--;
}
}
} else if (sortby == 1) {
for (int i = 1; i < 10; i++) {
int j = i;
while (j > 0 &&
waren[j - 1]->getEinkaufspreis() > waren[j]->getEinkaufspreis()) {
std::swap(waren[j - 1], waren[j]);
j--;
}
}
}
}
void quicksort(Ware *waren[10], int l, int u) {
int i = l, j = u;
Ware *a;
int pivot = waren[(l + u) / 2]->getSeriennummer();
while (i <= j) {
while (waren[i]->getSeriennummer() < pivot) {
i++;
}
while (waren[j]->getSeriennummer() > pivot) {
j--;
}
if (i <= j) {
a = waren[i];
waren[i] = waren[j];
waren[j] = a;
i++;
j--;
}
};
if (l < j) {
quicksort(waren, l, j);
}
if (i < u) {
quicksort(waren, i, u);
}
}