📜  递归插入排序的C程序(1)

📅  最后修改于: 2023-12-03 15:12:22.369000             🧑  作者: Mango

递归插入排序的C程序介绍

递归插入排序是一种基于插入排序的排序算法,其主要思想是通过递归的方式将待排序序列分解成一个个小序列,然后对这些小序列进行插入排序,最终将它们合并成一个有序的序列。相比于普通的插入排序,递归插入排序的时间复杂度更加稳定,但空间复杂度会略微增加。

以下为递归插入排序的C程序实现:

#include <stdio.h> 

void insertionSortRecursive(int arr[], int n) 
{ 
    if (n <= 1) 
        return; 
    
    insertionSortRecursive(arr, n-1); 
  
    int last = arr[n-1]; 
    int j = n-2; 
  
    while (j >= 0 && arr[j] > last) 
    { 
        arr[j+1] = arr[j]; 
        j--; 
    } 
    arr[j+1] = last; 
} 
  
void printArray(int arr[], int n) 
{ 
    int i; 
    for (i=0; i < n; i++) 
        printf("%d ", arr[i]); 
    printf("\n"); 
} 
   
int main() 
{ 
    int arr[] = {12, 11, 13, 5, 6}; 
    int n = sizeof(arr)/sizeof(arr[0]); 
  
    insertionSortRecursive(arr, n); 
    printArray(arr, n); 
  
    return 0; 
} 

首先定义了一个insertionSortRecursive函数,用于递归地进行插入排序。如果传入的序列长度n小于等于1,则直接返回;否则将前n-1个元素进行递归排序,然后在已排序的序列中找到新元素的位置,最后将新元素插入到序列中。

定义了一个printArray函数,用来输出排序后的序列。在主函数中初始化一个待排序序列arr,然后计算它的长度n。调用insertionSortRecursive函数将该序列排序,最后用printArray函数输出排好序的序列。

以上就是递归插入排序的C程序实现。