排序算法系列:堆排序(heapsort)(C语言)
来源:互联网 发布:二级域名指定端口 编辑:程序博客网 时间:2024/05/16 19:19
通俗理解:运用数据结构中的最大堆结构,取出数组中的中的最大元素,在重新构造最大堆,再找出其最大元素,以此类推直到取完堆结构中的元素为止,最终得到排好序的数组。观看动态过程
voidswap(int* a,int *b){int swap;swap = *a;*a = *b;*b = swap;}//创建最大堆void build_heap(int *a,int size){int k;for (k = size;k>=0;k--)heapfiy(a,size,k);}//保持最大堆性质voidheapfiy(int *a,int size,int n){int left = 2*n+1;int right = 2*n+2;int max = n;if (left<=size && a[n] < a[left])max = left;if (right<=size && a[max] < a[right])max = right;if (max!=n)//此处检查小分支上的元素是否发生变化,若变化继续调用heapfiy(){swap(&a[max],&a[n]);heapfiy(a,size,max);}}//堆排序实现voidheapsort(int*a,int size){build_heap(a,size);while (size>0){swap(&a[0],&a[size--]);heapfiy(a,size,0);}}
堆排序的平均时间复杂度为
- 排序算法系列:堆排序(heapsort)(C语言)
- HeapSort(堆排序算法)
- 排序算法 之 堆排序(heapsort)
- Java排序算法--堆排序(HeapSort)
- 堆排序(HeapSort)
- 堆排序(Heapsort)
- 堆排序 (Heapsort)
- 堆排序(heapsort)
- 堆排序(HeapSort)
- 堆排序(heapsort)
- 堆排序(heapsort)
- 堆排序(Heapsort)
- 堆排序(HeapSort)
- 堆排序(Heapsort)
- 堆排序(HeapSort)
- 堆排序(heapsort)
- 堆排序(HeapSort)
- 经典算法(9)- 堆排序(Heapsort)
- 插件__discuz x2.5插件开发傻瓜图文教程,用demo说话
- 男人的一夜,女人的一生:QQ空间伤感日志
- libvlc外部api的简单整理
- flex bulider4.5 不能调试
- 正则表达式
- 排序算法系列:堆排序(heapsort)(C语言)
- 找工作的这些日子
- Oracle PL/SQL实战
- error LINK2019 unresolved external symbol __imp__SetupDiDestroyDeviceInfoList@4
- 人生有失有得,谁知道最后的结果……
- 牌都没有,打个毛的德州啊——App刷量那些事,懂的进
- Untiy3d动画插件
- [Linux] shell bash 脚本特殊变量 [大三TJB_708]
- 莫名其妙死机