递归排序运行实例

来源:互联网 发布:演示软件 编辑:程序博客网 时间:2024/05/16 01:42

看了几天的递归,总结下经验,看这篇文章前,如果你没有学习过递归这种思想,请看下这个网站,讲的挺不错

http://www.tudou.com/listplay/SaZl9xKGqDE/hFFCJz8mBDM.html

之后你可以理解下写的这个递归排序小应用。

<textarea readonly="readonly" name="code" class="c">

#include<stdio.h>

#include<stdlib.h>
//merge函数就是在小程序里(!注意一定要明确是递归的小程序,而不是全部)
//不断合并
void merge(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex)
{
    int i,j,k;
    i=startIndex;j=midIndex+1;k=startIndex;
    while(i!=midIndex+1 && j!=endIndex+1)
    {
        if(sourceArr[i]<sourceArr[j])
            tempArr[k++]=sourceArr[i++];
        else
            tempArr[k++]=sourceArr[j++];}
    while(i!=midIndex+1)
        tempArr[k++]=sourceArr[i++];
    while(j!=endIndex+1)
        tempArr[k++]=sourceArr[j++];
    for(i=startIndex;i<=endIndex;i++)
        sourceArr[i]=tempArr[i];

}
//mergesort函数就是一个递归并且合并的函数引用
void mergesort(int sourceArr[],int tempArr[],int startIndex,int endIndex)
{
    int midIndex;
    if(startIndex<endIndex)
    {
        midIndex=(startIndex+endIndex)/2;
        mergesort(sourceArr,tempArr,startIndex,midIndex);
        mergesort(sourceArr,tempArr,midIndex+1,endIndex);
        merge(sourceArr,tempArr,startIndex,midIndex,endIndex);
    }

}
int main()
{
    int a[8]={50,20,20,30,70,40,80,60};
    int b[10],i;
    mergesort(a,b,0,7);
    for(i=0;i<=7;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;

}

</textarea>


0 0