一开始思考这个问题的时候冒泡排序是不能用递归实现的,因为他需要对整个数组进行操作,而根据分治法,必须要有分解,解决和合并三个部分,所以分解数组缩小规模看起来似乎是不能行的。后来想了想,发现削减一层循环,做成递归就好。所以默默的说一句,这个递归就是非递归方式的 外层循环啊。
#include <iostream>
using namespace std;
void BubbleSort(int *a,int n,int j)
{
if(j==n)
return ;
int i=0;
for(i=n;i>j;i--)
{
if(a[i-1]>a[i])
{
int temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
}
BubbleSort(a,n,j+1);
}
int main()
{
int a[10]={9,8,7,6,5,4,3,2,1,0};
BubbleSort(a,9,0);
int i=0;
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}