堆栈排序算法
来源:互联网 发布:pooled ols对截面数据 编辑:程序博客网 时间:2024/06/02 06:31
#include <stdio.h>
typedef struct stu{
int length; // 结构体中str数组的大小
int str[11];
}list;
void swap(list *p,int s,int m) // 交换数组的第一个和最后一个元素
{
int t;
t=p->str[s];
p->str[s]=p->str[m];
p->str[m]=t;
}
void fun(list *p,int s,int m) // 构建一个最大数在最顶端的二叉树(用数组str表示)
{
int j,temp;
temp=p->str[s];
//这里自己画图自己分析一下,看图很容易理解
for(j=2*s;j<=m;j*=2)
{
if(j<m&&p->str[j]<p->str[j+1]) // 找到左右两个孩子中最大的数的下标
j++;
if(temp>=p->str[j]) // 如果父结点比左右两个孩子中最大的还大,结束循环
break;
p->str[s]=p->str[j]; // 把左右孩子中大的一个赋值给父结点
s=j; // 为下一次循环赋值做准备
}
p->str[s]=temp; // 这里完成交换赋值
}
void sore(list *p)
{
int i,j;
for(i=p->length/2;i>0;i--) // 左孩子的结点下标是父结点的2x,右孩子为2x+1;
fun(p,i,p->length);
for(i=p->length;i>1;i--)
{
swap(p,1,i);
fun(p,1,i-1);
}
}
void print(list *p)
{
int i;
for(i=1;i<10;i++)
printf("%d ",p->str[i]);
}
int main()
{
int i;
list p;
for(i=1;i<10;i++)
scanf("%d",&p.str[i]);
p.length=9;
sore(&p);
print(&p);
}
typedef struct stu{
int length; // 结构体中str数组的大小
int str[11];
}list;
void swap(list *p,int s,int m) // 交换数组的第一个和最后一个元素
{
int t;
t=p->str[s];
p->str[s]=p->str[m];
p->str[m]=t;
}
void fun(list *p,int s,int m) // 构建一个最大数在最顶端的二叉树(用数组str表示)
{
int j,temp;
temp=p->str[s];
//这里自己画图自己分析一下,看图很容易理解
for(j=2*s;j<=m;j*=2)
{
if(j<m&&p->str[j]<p->str[j+1]) // 找到左右两个孩子中最大的数的下标
j++;
if(temp>=p->str[j]) // 如果父结点比左右两个孩子中最大的还大,结束循环
break;
p->str[s]=p->str[j]; // 把左右孩子中大的一个赋值给父结点
s=j; // 为下一次循环赋值做准备
}
p->str[s]=temp; // 这里完成交换赋值
}
void sore(list *p)
{
int i,j;
for(i=p->length/2;i>0;i--) // 左孩子的结点下标是父结点的2x,右孩子为2x+1;
fun(p,i,p->length);
for(i=p->length;i>1;i--)
{
swap(p,1,i);
fun(p,1,i-1);
}
}
void print(list *p)
{
int i;
for(i=1;i<10;i++)
printf("%d ",p->str[i]);
}
int main()
{
int i;
list p;
for(i=1;i<10;i++)
scanf("%d",&p.str[i]);
p.length=9;
sore(&p);
print(&p);
}
0 0
- 堆栈排序算法
- 面试算法:堆栈元素的在线排序
- 堆栈排序
- 排序堆栈
- 堆栈算法
- 堆栈-基本算法
- 【数据结构与算法】堆栈
- 堆栈的各种算法
- 堆栈的各种算法
- 数据结构算法--堆栈
- java堆栈迷宫算法
- 快速堆栈模糊算法
- 递归算法堆栈溢出
- 算法导论7-4思考题-快速排序中的堆栈深度-尾递归技术
- 基于堆栈的时间复杂度为O(n)的箱子排序算法实现
- 快速排序中的堆栈深度
- 快速排序中的堆栈深度
- 快速排序中的堆栈深度
- plsql中如何设置sql window背景颜色
- B+树|MYSQL索引使用原则
- spring 实现数据库读写分离
- C# 方法和属性的访问权限修饰符解析
- 工具类
- 堆栈排序算法
- PHP安全编程之表单与数据安全
- epoll实现TCP通信
- Linux中文件查找方法
- sentos yum安装mysql
- 调用shell命令 - 去除结尾的换行符
- 【POJ 2377 Bad Cowtractors】
- [李景山php]每天laravel-20161009|Validator.php-9
- 在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法