博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法(二)
阅读量:5180 次
发布时间:2019-06-13

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

堆排序 //7-heap sort methodvoid build_heap( int *arr, int start, int n ){        if( (start+1)*2 > n )                return;        if( (start+1)*2 == n )        {                if( arr[start] < arr[(start+1)*2-1] )                {                        int tmp;                        tmp = arr[start];                        arr[start]=arr[(start+1)*2-1];                        arr[(start+1)*2-1]=tmp;                }        }        else        {                int tmp;                if( arr[start] < arr[(start+1)*2-1] )                {                        tmp = arr[start];                        arr[start] = arr[(start+1)*2-1];                        arr[(start+1)*2-1] = tmp;                        build_heap( arr, (start+1)*2-1, n );                }                if( arr[start] < arr[(start+1)*2] )                {                        tmp = arr[start];                        arr[start] = arr[(start+1)*2];                        arr[(start+1)*2] = tmp;                        build_heap( arr, (start+1)*2, n );                }        }}void init_heap( int *arr, int n ){        int offset;        if( n%2==0 )        {                if( arr[n/2-1] < arr[n-1] )                {                        int tmp = arr[n/2-1];                        arr[n/2-1]=arr[n-1];                        arr[n-1]=tmp;                }                offset = n-1;        }        else                offset = n;        for( ; offset>1; offset-=2 )        {                if( arr[offset/2-1] < arr[offset-1] )                {                        int tmp;                        tmp = arr[offset/2-1];                        arr[offset/2-1]=arr[offset-1];                        arr[offset-1]=tmp;                        build_heap(arr,offset-1, n );                }                if( arr[offset/2-1] < arr[offset-2] )                {                        int tmp;                        tmp = arr[offset/2-1];                        arr[offset/2-1]=arr[offset-2];                        arr[offset-2]=tmp;                        build_heap(arr,offset-2, n );                }        }}void heap_sort( int *arr, int n ){        int offset=n;        init_heap( arr, n );        for( ; offset>1; )        {                --offset;                int tmp=arr[offset];                arr[offset]=arr[0];                arr[0]=tmp;                build_heap( arr, 0, offset );        }}

 

转载于:https://www.cnblogs.com/feika/p/3607394.html

你可能感兴趣的文章
Android使用Pull解析器解析XML文件
查看>>
angular ng-content
查看>>
netty
查看>>
MVVM技术 - 的实现 @{}来进行 调用那个 DataBinding方法
查看>>
[后缀数组]JZOJ 3337 wyl889的TLE
查看>>
[后缀数组]luogu 3809 后缀排序
查看>>
[博弈论]JZOJ 3339 wyl8899和法法塔的游戏
查看>>
[费用流]luogu P3980 志愿者招募
查看>>
[权值线段树]JZOJ 3236 矮人排队
查看>>
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
JavaScript中的事件
查看>>
Python 第三十三章 进程进阶 进程创建+空间隔离+其他参数+守护进程+僵尸进程和孤儿进程...
查看>>
Python 第二十四章 面向对象 封装多态+super深度剖析
查看>>
Python 第三十四章 进程通信 文件通信+队列通信 + 锁 join+ lock
查看>>
Python 第二十六章 面向对象 元类+反射+双下方法
查看>>
博客园的样式
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
Python 第五十三章 jquery事件
查看>>
Python 第四十六章 html引入
查看>>
第五十五章 Django介绍了解+web框架本质
查看>>