1. 程式人生 > >C++插入排序的遞迴演算法

C++插入排序的遞迴演算法

遞迴演算法一般分為三個部分:

(1)遞迴出口

(2)分解過程

這個過程即用遞迴體(前項與後項的關係)將“大問題”分解成“小問題”,直到遞迴出口為止。

(3)求值過程

在求值過程中已知“小問題”,計算“大問題”。

(1)插入排序函式的呼叫

#include <iostream>
#include"2_3_4.cpp"
using namespace std;


int main()
{
   int a[]={1,2,5,3,7,1,9,10,77};


   SORT(a,9);
   for(auto i:a)
    cout<<i<<" ";
    return 0;
}

(2)插入排序函式的實現

#include<iostream>


void SORT(int a[],int k)
{
if(k==2)    //遞迴出口
{
    if(a[0]>a[1])
    {
        int temp=a[0];
        a[0]=a[1];
        a[1]=temp;
    }
}
else
{
    SORT(a,k-1);  //問題的分解
    int i=k-1;          //求值的過程,即從遞迴出口出來後要執行的步驟
    while((a[i]<a[i-1])&&(i>0))
    {
        int temp=a[i];
        a[i]=a[i-1];
        a[i-1]=temp;
        i=i-1;
    }
}
}