private static int FindeErsteRechnungBinaer(decimal nettopreis, _Rechnung[] re, bool debugMode = false) { int firstIndex = 0, lastIndex = re.Length - 1, steps = 1; while (firstIndex <= lastIndex) { int middleIndex = (lastIndex + firstIndex) / 2; _Rechnung r = re[middleIndex]; if (r.Nettopreis == nettopreis) { if (debugMode) { Console.WriteLine($"Element nach {steps} Schritten gefunden"); } return(middleIndex); } if (r.Nettopreis < nettopreis) { firstIndex = middleIndex + 1; } else if (r.Nettopreis > nettopreis) { lastIndex = middleIndex - 1; } steps++; } Console.WriteLine($"Nettopreis von {nettopreis} wurde nicht gefunden."); return(-1); }
private static void DruckeRechnung(_Rechnung r) { Console.WriteLine("--------------------"); Console.WriteLine($"Bestelldatum: {r.Bestelldatum}"); Console.WriteLine($"Rechnungsnummer: {r.Rechnungsnummer}"); Console.WriteLine($"Kundennummer: {r.Kundennummer}"); Console.WriteLine($"Nettopreis: {r.Nettopreis}"); Console.WriteLine("--------------------\n"); }
//Zusatzaufgabe 2 - nicht abgeschlossen public static void TaskC() { _Rechnung[] re = LinearSearch.ErzeugeZufallsRechnung2(), re2 = new _Rechnung[re.Length]; //Array kopieren for (int i = 0; i < re.Length; ++i) re2[i] = re[1]; BubbleSortRechnungen(re, true); Console.WriteLine("BubbleSort wurde erfolgreich ausgeführt"); }
public static _Rechnung[] ErzeugeZufallsRechnung2() { _Rechnung[] re = new _Rechnung[1000]; Random rand = new Random(); for (int i = 0; i < re.Length; ++i) { _Rechnung r; r.Bestelldatum = "15.02.2021"; r.Kundennummer = rand.Next(); r.Nettopreis = rand.Next(); r.Rechnungsnummer = rand.Next(20000); re[i] = r; } return(re); }
private static int RecursiveBinary(decimal nettopreis, _Rechnung[] re, int firstIndex, int lastIndex, int steps) { int middleIndex = (lastIndex + firstIndex) / 2; _Rechnung r = re[middleIndex]; if (r.Nettopreis == nettopreis) { Console.WriteLine($"Element nach {steps} Schritten gefunden"); return(middleIndex); } else if (r.Nettopreis < nettopreis) { return(RecursiveBinary(nettopreis, re, middleIndex + 1, lastIndex, steps + 1)); } else // if (r.Nettopreis > nettopreis) { return(RecursiveBinary(nettopreis, re, firstIndex, middleIndex - 1, steps + 1)); } }
//Sortiert nach Nettopreis //generische Implementierung möglich, dauert aber zu lange private static void BubbleSortRechnungen(_Rechnung[] arr, bool printSwaps = false) { int swaps = 0; for (int _ = 0; _ < arr.Length; _++) { for (int i = 0; i < arr.Length - 1; i++) { if (arr[i].Nettopreis > arr[i + 1].Nettopreis) { _Rechnung temp = arr[i + 1]; arr[i + 1] = arr[i]; arr[i] = temp; swaps++; } } } if (printSwaps) { Console.WriteLine($"Swaps durchgeführt: {swaps}"); } }