没有合适的资源?快使用搜索试试~ 我知道了~
用递归与迭代的方法分别实现数组的排序与查找(C语言版).doc
需积分: 21 22 下载量 133 浏览量
2009-03-20
12:31:48
上传
评论 1
收藏 37KB DOC 举报
温馨提示
试读
3页
该文件是一个C语言程序代码,功能为:用递归与迭代的方法分别实现数组的排序与查找,程序简明扼要,很容易看懂的……
资源推荐
资源详情
资源评论
实验二 递归与迭代程序设计
系别 计算机系 班级 0701 姓名 龙琼 学号 14072400570 得分
实验目的:
1.熟悉二分检索问题的线性结构表示和二分检索树表示;
2.熟悉不同存储表示下求解二分检索问题的递归算法设计;
3.通过实例转换, 掌握将递归算法转换成迭代算法的方法;
4.掌握应用递归或迭代程序设计实现分治法求解问题的抽象控制策略.
实验内容:
1. 用递归与迭代的方法分别实现对数组的快速排序
2. 用递归与迭代的方法分别实现对数组中关键字的查找
程序源代码:
#include"stdio.h"
int a[1000],d[1000],m=0;
struct node
{ int low,high;
}st[1000];
int Partition (p,q) //返回快速排序划分点
{ int r=a[p],j=p+1,k=q,t;
while(1)
{ while ((j<=k) && (a[j]<=r)) j++;
while ((j<=k) && (a[k]>=r)) k--;
if (j<k) { t=a[j]; a[j]=a[k]; a[k]=t; j++; k--; }
else break;}
a[p]=a[k]; a[k]=r; return k;}
QuickSort1(p,q) //递归快排函数
{ int j;
if(p<q)
{ j=Partition(p,q);
QuickSort1(p,j-1);
QuickSort1(j+1,q);}}
void QuickSort2(int a[],int n) //非递归方法实现快速排序
{ int i,j,low,high,temp,top=-1;
top++;
st[top].low=0;st[top].high=n-1;
while(top>-1)
{ low=st[top].low;high=st[top].high;top--;i=low;j=high;
if(low<high)
{ temp=a[low];
while(i!=j)
{ while(i<j&&a[j]>temp)j--;
if(i<j){a[i]=a[j];i++;}
while(i<j&&a[i]<temp)i++;
if(i<j){a[j]=a[i];j--;}}
a[i]=temp;
top++;st[top].low=low;st[top].high=i-1;
top++;st[top].low=i+1;st[top].high=high;
资源评论
lg891121
- 粉丝: 9
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功