2016-07-13 14 views
-5

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?

+0

Es ist unklar, was Sie fragen. Fragen Sie nach einer rekursiven Einfügesortierung oder fragen Sie, wie Sie die Wiederholungsbeziehung schreiben? –

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; 

    }