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

来源:互联网 发布:windows xp开机蓝屏 编辑:程序博客网 时间:2024/06/05 14:28

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

#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;}
0 0