Kann mir jemand den Algorithmus für diese Frage sagen? Q..Wir können Insertion als rekursive Prozedur wie folgt ausdrücken. Um A [1..n] zu sortieren, sortieren wir rekursiv A [1..n-1] und fügen dann A [n] in das sortierte Array A [1..n-1] ein. Schreiben Sie eine Wiederholung für die Laufzeit dieser rekursiven Version von Insertion sort.Was sollte der Algorithmus der folgenden Aussage sein?
-5
A
Antwort
0
Die Idee besteht darin, das Array rekursiv von Index 1 zu n-1 zu sortieren und dann das n-te Element an apt place einzufügen.
Algorithmus:
insertion_sort(Arr, n):
if(n <= 1)
return
insertion_sort(Arr, n-1)
temp = Arr[n]
for (i = n; i > 0; i--):
if(Arr[i] > temp):
Arr[i+1] = Arr[i]
else:
break
Arr[i+1] = temp
+0
was wird seine Laufzeit sein? bitte erzähle – prabhupant
0
public static void RecursiveInsertionSort(int[] array, int number) {
if (number >= 1)
return;
RecursiveInsertionSort(array, number - 1);
int currentnumber = array[number];
int i;
for (i = number - 1; i >= 0;) {
if (array[i] > currentnumber) {
array[i + 1] = array[i];
i--;
} else {
break;
}
}
array[i + 1] = currentnumber;
}
Es ist unklar, was Sie fragen. Fragen Sie nach einer rekursiven Einfügesortierung oder fragen Sie, wie Sie die Wiederholungsbeziehung schreiben? –