博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【改良的选择排序 】
阅读量:5251 次
发布时间:2019-06-14

本文共 1596 字,大约阅读时间需要 5 分钟。

/*改良的选择排序,需要堆积树 */#include
#include
#include
#define MAX 10#define SWAP(x, y) {int t; t = x; x = y; y = t;}void createheap(int []);void heapsort(int []);int main(void){ int number[MAX + 1] = {-1}; int i, num; srand(time(NULL)); printf("排序前: "); for(i = 1; i <= MAX; i++){ number[i] = rand()%100; printf("%d ", number[i]); } printf("\n建立堆积数:"); createheap(number); for(i = 1; i <= MAX; i++){ printf("%d ", number[i]); } printf("\n"); heapsort(number); printf("\n"); return 0;} void createheap(int number[]){ int i, s, p; int heap[MAX + 1] = {-1}; for(i = 1; i <= MAX; i++){ heap[i] = number[i]; s = i; p = i / 2; while(s >= 2 && heap[p] > heap[s]){ SWAP(heap[p], heap[s]); s = p; p = s / 2; } } for(i = 1; i <= MAX; i++){ number[i] = heap[i]; } } void heapsort(int number[]){ int i, m, p, s; m = MAX; while(m > 1){ SWAP(number[1], number[m]); m--; p = 1; s = 2 * p; while(s <= m){ if(s < m && number[s+1] < number[s]){ s++; } if(number[p] <= number[s]){ break; } SWAP(number[p], number[s]); p = s; s = 2 * p; } printf("\n排序中:"); for(i = MAX; i > 0; i--){ printf("%d ", number[i]); } } }

 

运行结果:

 

转载于:https://www.cnblogs.com/libra-yong/p/6367126.html

你可能感兴趣的文章
如何判断一个Div是否在可视区域,判断div是否可见
查看>>
AJAX异步学习总结(1)
查看>>
php URL判断
查看>>
GAN——生成手写数字
查看>>
python中的pil模块_在Python中使用PIL模块处理图像的教程
查看>>
hashmap java 便利_Java中HashMap的四种遍历方法,及效率比较
查看>>
850是什么意思_楼板没有挠度和裂缝的计算结果原因是什么?
查看>>
华为v8支持云闪付吗_华为EMUI11将正式推送,37款机型计划升级,你的手机支持吗?...
查看>>
java快速开发框架_Java 后台开发框架
查看>>
go 切片 转字符串_Go语言爱好者周刊:第 58 期—关于 context
查看>>
android authorities 获取_挖穿Android第三十九天
查看>>
elementui展示多张图片_多张图片的PPT,如何排版的更有创意?
查看>>
中亿验钞机升级_新版人民币来了,可验钞机却无法识别?工作人员回应了
查看>>
airpods固件更新方法_如何更新 AirPods / AirPods Pro 的固件
查看>>
axure 图片切换图片的交互_用v-on:click v-bind v-show 实现图片切换
查看>>
js起一个数的平方根_LeetCode 题解 | 69. x 的平方根
查看>>
boot jndi数据源 spring_MyBatis 多数据源读写分离(注解实现)
查看>>
gin post 数据参数_Golang GinWeb框架快速入门/参数解析
查看>>
新增数据接口_Tablestore入门手册-UpdateRow接口详解
查看>>
账号管理工具_myMail — 手机端的最佳邮箱管理工具
查看>>