您的位置:首页 > 其它

算法导论学习日记(7)冒泡排序的递归实现

2016-12-19 21:18 183 查看
一开始思考这个问题的时候冒泡排序是不能用递归实现的,因为他需要对整个数组进行操作,而根据分治法,必须要有分解,解决和合并三个部分,所以分解数组缩小规模看起来似乎是不能行的。后来想了想,发现削减一层循环,做成递归就好。所以默默的说一句,这个递归就是非递归方式的 外层循环啊。

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息