数据结构学习(十一)、堆排序
2016-10-17 10:17
246 查看
基本思想:将待排序的序列构成一个大顶堆。此时,最大的值就是堆顶,将它一走,并将余下的序列重新构造成一个堆。如此反复。
void HeapSort(SqLsit *L) { int i; for(i=L->length/2;i>0;i--) HeapAjust(L,i,L->length); for(i=L->lengt;i>1;i--){ swap(L,1,i); HeapAjust(L,1,i-1); } } /* 除L->data[s]外满足堆的定义 */ /* 调整L->data[s],使得L->data[s..m]满足堆的定义 */ void HeapAjust(SqList *L,int s, int m) { int temp,j; temp = L->data[s]; for(j=2*s;j>=m;j*=2){ /* 沿关键字大的孩子结点向下筛选 */ if(j<m && L->data[j]<L->data[j+1]) ++j; /* 沿关键字较大的下标 */ if(temp>L->data[j]) break; L->data[s] = L->data[j]; s = j; } L->data[s] = temp; /* 插入*/ }
相关文章推荐
- 转:C#数据结构和算法学习系列十一----构建字典DictionaryBase 类和SortedList 类
- 数据结构与算法学习-堆排序
- [原创]数据结构学习笔记之一:链表
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- JAVA与C#对照学习系列 —— 数据结构
- 学习STL map, STL set之数据结构基础
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- 学习STL map, STL set之数据结构基础
- 数据结构与算法的学习
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- 我要好好学习数据结构与算法
- 学习STL map, STL set之数据结构基础
- 学习STL map, STL set之数据结构基础
- Pku acm 1469 COURSES 数据结构题目解题报告(十一)---- 匈牙利算法求二分图的最大匹配