排序——堆排序
来源:互联网 发布:怎么做seo 编辑:程序博客网 时间:2024/06/04 17:40
//堆排序#include <cstdio>using namespace std;#define MAX_NUM1050int data[MAX_NUM];void swap2(int *a , int *b){int tmp = *a;*a = *b;*b = tmp;}void adjust(int node , int N){int start = node*2 ;int left = start+1;int right = start+2;int max = start ;//不要越界 if(left<N && data[left]>data[max]){max = left;}if(right<N && data[right]>data[max]){max = right;}if(max!=start){//交换swap2(&data[max] , &data[start]);//继续调整以孩子为父节点的子树 adjust(max , N);}}int main(void){int N ;int i ;#ifdef DEBUGfreopen("input.txt" , "r" , stdin);freopen("output.txt" , "w" , stdout);#endifscanf("%d" , &N);for( i =0 ; i<N; i++){scanf("%d" , &data[i]);}//堆排序开始~ for(i=(N-1)/2 ; i>=0 ; i--){adjust(i , N);}//开始输出 for(i=N-1 ; i>=0 ; i--){int j ; swap2(&data[0] , &data[i]);adjust( 0 , i);for( j =0 ; j<N ; j++){printf("%d " , data[j]); } printf("\n");} return 0;}
0 0
- 排序——堆排序
- 排序——堆排序
- 排序——堆排序
- 排序——堆排序
- 排序——堆排序
- 选择排序—堆排序
- 选择排序—堆排序
- 内部排序—堆排序
- 排序算法—堆排序
- 排序算法—堆和堆排序
- 堆排序—源码
- 数据结构 — 堆排序
- 堆排序—Java
- 堆排序—Java
- 排序3——堆排序,归并排序,快速排序
- 排序算法——堆排序
- 数据结构之排序——堆排序
- 排序算法——堆排序
- oj: 猴哥出世
- 面试题38:数字在排序数组中出现的次数
- 选项卡的实现方式
- poj 1094 Sorting It All Out (拓扑排序)@
- 有关error: “IDD_DIALOG2”: 未声明的标识符类似错误解决方法转载
- 排序——堆排序
- 习题3-1 score
- ListView 自动向下滑动
- 单链表是否有环--Java
- 二叉树--九度.1201.[二叉排序树]
- KMP算法
- All in All UVA
- pat-top 1006. Tree Traversals
- android UI开发之RecyclerView(一)简单实现