Ich möchte ein gegebenes Array quicksort und auch den Index verfolgen. Die Funktion sort unsorted_arr[]={3,5,6,6,7,4,5}
und geben sorted_arr[]={3,4,5,5,6,6,7}
und sollte auch etwas wie sorted_indices[]={0,5,1,6,2,3,4}
zurückgeben.Quicksort und Verfolgen von Indizes
Hier ist die Funktion
//int unsorted_arr[],sorted_arr[],sorted_indices[];
void quickSort(int arr[], int left, int right)
{
int i = left, j = right;
sorted_indices[i]=left;sorted_indices[j]=right;
int tmp;
int pivot = arr[(left + right)/2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
{sorted_indices[i]=i;
i++; }
while (arr[j] > pivot)
{sorted_indices[j]=j;
j--; }
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
sorted_indices[i]=j;
sorted_indices[j]=i;
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
Anmerkung: Ich bin auf der Verwendung von Turbo C++ 3.0 und Arrays.
Warum sortieren Sie nicht ein Array von [Wert, Index]? Verwenden Sie den Wert zum Sortieren nach, und Sie erfahren, wo der Index nach der Sortierung lag. – Carlos
wäre es nicht einfacher, wenn ich es so mache? – Dhruva
Bitte, bitte, upgraden Sie auf einen Compiler, der etwas vage Modern unterstützt (nicht 25+ Jahre alt). Leider sehen wir einige Universitäten, die solche alten Werkzeuge benutzen. Diese Universität schadet Ihren Beschäftigungsaussichten eher, als ihnen zu helfen. Wenn Sie alleine lernen, lernen Sie trotzdem etwas auf dem neuesten Stand. – BoBTFish