堆排序(c实现)
来源:互联网 发布:id for mac中文破解版 编辑:程序博客网 时间:2024/04/30 05:06
int sort_heap(int arr[],int len){ int k,i,j,l; for(k=len;k>1;k--)//len-1次循环 { for(i=k/2;i>=0;i--)//从中间位置开始遍历 { for(j=i;j*2+1<k;)//child进行遍历 { l=j*2+1;//left child if(l+1<k && arr[l]<arr[l+1]) { l++; } if(arr[l]>arr[j]) { swap(&arr[l],&arr[j]); j=l; } else { break; } } } swap(&arr[0],&arr[k-1]); }}
extern int swap(int *a , int *b){ *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}
int main(){ int arr[8]={2,3,5,1,9,8,4,6},i; sort_heap(arr,8); for(i=0;i<8;i++) { printf ("%d,",arr[i]); } return 0;}
堆排主要分两步:
1、循环n-1次,每次找出最大的一个,然后与最后一个替换,循环一次,将最大索引-1
2、从中间开始循环,将最大的一个放入支点,并将子节点按大小顺序排好
0 0
- 堆排序(c实现)
- 排序算法(C实现)--------- 堆排序
- 堆排序算法实现(C++)
- 堆排序算法(C & Java 实现)
- 堆排序算法(c 语言实现)
- 数组实现堆排序(c++)
- 堆排序(C语言实现)
- 堆排序(C语言实现)
- 堆排序法(c/c++实现)
- 堆排序的C实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序--C语言实现
- C语言实现堆排序
- 堆排序--C语言实现
- 堆排序C语言实现
- Android中实现文件下载
- C/C++指针
- iOS 学习资料整理
- Unity3D 相机控制
- 【Android Tips】Timestamp在Android上的转换
- 堆排序(c实现)
- 滚动条
- python程序界面
- 文本框
- java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)
- 高速高精度低资源占用单精度浮点算法verilog实现
- 框体 Toplevel 主窗体
- 【Jason's_ACM_解题报告】Piotr's Ant
- spinner