快速分类递归算法改写成迭代算法
来源:互联网 发布:吉林市网络医院 编辑:程序博客网 时间:2024/05/12 03:10
快速分类递归算法改写成迭代算法
/*将data[low, high]进行快速分类的迭代算法(WIN-TC1.9.1k中文DOS环境调试通过)*/
#include "stdio.h"
#include "conio.h"
#define n 8
void output(int *data)
{ int i;
printf("数组中的元素为:/n");
for(i=0;i<n;i++)
printf("%d/n",data[i]);
}
int Partition(int *data, int low, int high)
{ int i,j,t,r,k;
r=data[low]; j=low+1; k=high;
while(1)
{ while((j<=k)&&(data[j]<=r)) j++;
while((j<=k)&&(data[k]>=r)) k--;
if(j<k){ t=data[j]; data[j]=data[k]; data[k]=t; j++; k--; }
else break;
}
data[low]=data[k]; data[k]=r ;
return k;
}
int QSort(int *data, int low, int high)
{ int stack[2*n][2];
int i,top=0,t1,t2;
top++;
stack[top][0]=low;
stack[top][1]=high;
while(top!=0)
{
t1=stack[top][0];
t2=stack[top][1];
top--;
i=Partition(data,t1,t2);
if(t1<i-1)
{
top++;
stack[top][0]=t1;
stack[top][1]=t2;
}
if(i+1<t2)
{
top++;
stack[top][0]=i+1;
stack[top][1]=t2;
}
}
}
main()
{
int i,t,data[n];
for(i=0;i<n;i++)
{
printf("/n输入第 %d 个元素:",i+1);
scanf("%d",&data[i]);
}
output(data);
QSort(data,0,n-1);
output(data);
getch();
}
- 快速分类递归算法改写成迭代算法
- 迭代跟递归算法
- 迭代跟递归算法
- 简单算法--迭代/递归
- 算法 递归 迭代 阶乘
- 【算法】迭代和递归
- 迭代算法与递归算法
- [ZZ]迭代算法与递归算法
- 迭代算法与递归算法概述
- 递归算法与迭代算法总结
- LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)
- 什么是迭代和递归算法?
- 二分法搜索迭代和递归算法
- 递归和迭代算法 [汉诺塔问题]
- Javascript迭代、迭代、穷举、递归常用算法
- 递归算法-----递归算法优化------非递归算法(递推,迭代)----运行时间
- 快速排序(迭代算法)
- 迭代算法与递归算法的概念及区别
- java包与jar文件
- 树结构表示下集合的合并与元素的查找
- PHP中的正规表达式(二)
- 这才叫赚钱:月薪8000出租车司机给我上的震撼一课!
- 精通ASP.NET中弹出窗口技术
- 快速分类递归算法改写成迭代算法
- 如何在从硬盘上安装可独立引导的操作系统
- CodeSnip: How to Create a BoundField Dynamically Using GridView
- 正则表达式中的特殊字符
- Oracle学习
- 高手成长的六个阶段(转载于《编程高手箴言》)
- Oracle数据库游标使用大全
- CHM无法打开的处理方法
- 关于Java和MySQL中文字符编码问题