Program C untuk jenis sisipan rekursif

WBOY
Lepaskan: 2023-09-20 14:37:09
ke hadapan
872 orang telah melayarinya

Program C untuk jenis sisipan rekursif

Isihan sisipan ialah algoritma pengisihan yang berdasarkan perbandingan di tempat.

Algoritma ini berfungsi dengan meletakkan elemen pada kedudukan dalam subarray yang diisih, iaitu subarray sebelum elemen adalah subarray yang diisih.

Algoritma

Langkah1 - Gelung dari 1 hingga n-1 dan laksanakan -

Langkah2 .1 - Pilih elemen pada kedudukan i, tatasusunan[i].

Langkah2.2 - Masukkan elemen ke dalam tatasusunan sub-tatasusunan[0] yang diisih pada kedudukannya arr[i].

Mari kita fahami algoritma melalui contoh

array = [34, 7, 12, 90, 51]

Untuk i = 1, arr[1] = 7, arr[1] = 7 0] - Kedudukan dalam arr[1].

[7, 34, 12, 90, 51]
Salin selepas log masuk

Untuk i = 2, arr[2] = 12, letakkan kedudukan dalam subarray arr[0] - arr[2].

[7, 12, 34, 90, 51]
Salin selepas log masuk
Salin selepas log masuk

Untuk i = 3, arr[3] = 90, letakkannya pada kedudukan subarray arr[0] - arr[3].

[7, 12, 34, 90, 51]
Salin selepas log masuk
Salin selepas log masuk

Untuk i = 4, arr[4] = 51, letakkannya pada kedudukan yang betul dalam subarray arr[0] - arr[4].

[7, 12, 34, 54, 90]
Salin selepas log masuk

Di sini kita akan melihat cara isihan sisipan rekursif berfungsi. Ia berfungsi dengan cara yang bertentangan, iaitu kita akan memanggil secara rekursif fungsi recursiveInsertionSort() untuk mengisih tatasusunan elemen n-1 berbanding dengan lelaran semasa. Kemudian dalam tatasusunan diisih yang dikembalikan oleh fungsi, kami memasukkan elemen ke-n ke dalam kedudukannya dalam tatasusunan yang diisih.

Program pengisihan sisipan rekursif adalah seperti berikut:

Contoh

Demonstrasi

#include <stdio.h>
void recursiveInsertionSort(int arr[], int n){
   if (n <= 1)
      return;
   recursiveInsertionSort( arr, n-1 );
   int nth = arr[n-1];
   int j = n-2;
   while (j >= 0 && arr[j] > nth){
      arr[j+1] = arr[j];
      j--;
   }
   arr[j+1] = nth;
}
int main(){
   int array[] = {34, 7, 12, 90, 51};
   int n = sizeof(array)/sizeof(array[0]);
   printf("Unsorted Array:\t");
      for (int i=0; i < n; i++)
   printf("%d ",array[i]);
      recursiveInsertionSort(array, n);
   printf("</p><p>Sorted Array:\t");
   for (int i=0; i < n; i++)
      printf("%d ",array[i]);
   return 0;
}
Salin selepas log masuk

Output

Unsorted Array: 34 7 12 90 51
Sorted Array: 7 12 34 51 90
Salin selepas log masuk

Atas ialah kandungan terperinci Program C untuk jenis sisipan rekursif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan