Hey,
Also ich verwende folgenden Algo (Quicksort) um ein byte[] zu sortieren:
Das geht sogar, allerdings mehr als mir eigentlich lieb ist^^
Ich passe keinen der Parameter by reference, trotzdem wird das original input array modifiziert.
Das soll aber nicht so sein.
Hier ein Bild des Problems :
Eigentlich sollte x noch unsortiert sein und nur y sollte sortiert sein.
Wie kann ich das lösen?
Also ich verwende folgenden Algo (Quicksort) um ein byte[] zu sortieren:
C#-Quellcode
- /// <summary>
- /// Quicksort algorithm to sort the elements in an array.
- /// https://github.com/Sajgoniarz/Algorithms-Unlocked/blob/master/1. Sorting And Searching/Quick Sort/QuickSort.cs
- /// </summary>
- /// <param name="a">Source array</param>
- /// <param name="p">Start index</param>
- /// <param name="r">End index</param>
- /// <returns>Sorted array</returns>
- public static byte[] Sort(byte[] a, int p, int r)
- {
- if (p >= r) return a;
- int q = Partition(a, p, r);
- Sort(a, p, q - 1);
- Sort(a, q + 1, r);
- return a;
- }
- private static int Partition(byte[] a, int p, int r)
- {
- int q = p;
- byte temp;
- for (int u = p; u < r; u++)
- {
- if (a[u] <= a[r])
- {
- temp = a[q];
- a[q] = a[u];
- a[u] = temp;
- q++;
- }
- }
- temp = a[q];
- a[q] = a[r];
- a[r] = temp;
- return q;
- }
Das geht sogar, allerdings mehr als mir eigentlich lieb ist^^
Ich passe keinen der Parameter by reference, trotzdem wird das original input array modifiziert.
Das soll aber nicht so sein.
Hier ein Bild des Problems :
Eigentlich sollte x noch unsortiert sein und nur y sollte sortiert sein.
Wie kann ich das lösen?
C# Developer
Learning C++
Learning C++