#pragma once #include "Sortiment.h" #include "Ware.h" #include 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[], 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); } } void merge(Ware *array[], int left, int middle, int right) { int n1 = middle - left + 1; int n2 = right - middle; Ware *leftArray[n1]; Ware *rightArray[n1]; for (int i = 0; i < n1; i++) { leftArray[i] = array[left + i]; } for (int j = 0; j < n2; j++) { rightArray[j] = array[middle + j + 1]; } int k = 0, l = 0, m = left; while (k < n1 && l < n2) { if (leftArray[k]->getBezeichnung() <= rightArray[l]->getBezeichnung()) { array[m] = leftArray[k]; k++; } else { array[m] = rightArray[l]; l++; } m++; } while (k < n1) { array[m] = leftArray[k]; k++; m++; } while (l < n2) { array[m] = rightArray[l]; l++; m++; } } void mergeSort(Ware *array[], int left, int right) { if (left < right) { int middle = left + (right - left) / 2; mergeSort(array, left, middle); mergeSort(array, middle + 1, right); merge(array, left, middle, right); } }