额,堆排序
2014-08-22 15:58
99 查看
不想解释原理了,就是创建堆,交
换,调整堆,这么一个过程
#include "stdio.h" #include "stdlib.h" #define N 10 void AdjustHeap(int a[],int i,int num) { int temp= a[i]; int j=0; for (j =2*i; j <=num; j=j*2) { if (j<num&&a[j]<a[j+1]) { j++; } if (a[j]<=temp) { break; } a[i]=a[j]; i=j; } a[i]=temp; } void swap(int a[],int i,int num) { int temp=a[i]; a[i]=a[num]; a[num]=temp; } void HeapSort(int a[],int num) { for (int i = (num)/2; i >0; --i) { AdjustHeap(a,i,num); } int b=1; //排序 for (int i = num; i > 1; i--) { swap(a,1,i); AdjustHeap(a,1,i-1); } } int main(int argc, char const *argv[]) { int a ={0,2,3,1,9,8,6,7,4,5}; HeapSort(a,N-1); for (int i = 1; i < N; ++i) { printf("%d ",a[i]); } system("pause"); return 0; }
换,调整堆,这么一个过程
相关文章推荐
- 10种算法原理(冒泡排序,选择排序,快速排序,堆排序,希尔排序,桶排序等)
- STL算法,堆排序
- 白话经典算法系列之七 堆与堆排序
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 堆排序java实现
- 6种排序算法及其比较 简单选择排序,堆排序,简单插入排序,希尔排序,冒泡排序,快速排序,归并排序
- 堆排序 Heap Sort
- 堆排序
- 堆排序原理及实现
- java 堆排序
- 选择排序---简单选择排序 堆排序
- 排序算法08:优先队列与堆排序
- 最大堆排序
- 数据结构基础加强之最小堆的实现与堆排序
- 排序--堆排序
- hdu 1280 堆排序
- c++实现最大堆建立(链表结构)和堆排序
- 堆排序详解
- 排序 堆排序
- 第二部分 排序和顺序统计量 第 6 章 堆排序