递归排序运行实例
来源:互联网 发布:演示软件 编辑:程序博客网 时间: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
- 递归排序运行实例
- 彻底弄懂递归[心得](实例:归并排序)
- 递归实例
- 递归实例
- 递归实例
- 二分法排序实例(递归与非递归实现)--MyEclipse, Maven, Junit
- 递归排序
- 递归排序
- 递归排序
- 递归排序
- 递归排序
- 递归排序
- 递归的运行过程
- Oracle 递归运行原理
- 排序实例
- CTE 递归应用实例
- java递归实例
- 递归简单实例
- 机器学习相关资料搜集
- 【Android】TypedArray和obtainStyledAttributes使用
- 如何选择开源许可证?
- 对[].slice.call(arguments,1) 的一丢丢见解
- 关于单片机串口发送时初始发送的数据第一个总是00的问题解决
- 递归排序运行实例
- [Android]Android源码下载和编译
- OPENCV
- 图数据库Titan在生产环境中的使用全过程+分析
- 百度网盟推广链接通配符(URL动态参数)
- java环境变量设置
- 多线程处理信号量
- JAVA经典题目及答案(前30)
- UCOSII归纳二