C++插入排序的遞迴演算法
阿新 • • 發佈:2019-02-12
遞迴演算法一般分為三個部分:
(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;
}
}
}