数据结构与算法-堆与堆排序
2017-10-31 00:11
344 查看
public void changeDown(int size){
int current_index = 0 ;
while(current_index < size/2 ){
int large_index = 0 ;
int left_index = (current_index*2)+1 ;
int right_index = (current_index*2)+2 ;
if(array[right_index]!=0 && array[left_index]>array[right_index])
large_index = left_index ;
if(array[right_index]!=0 && array[left_index]<array[right_index])
large_index = right_index ;
if(array[right_index] == 0){
if(array[current_index]<array[left_index]){
int temp = array[current_index] ;
array[current_index] = array[left_index];
array[left_index] = temp ;
}
return ;
}
int temp = array[current_index] ;
array[current_index] = array[large_index];
array[large_index] = temp ;
current_index = large_index ;
}
}
public void changeUp(int size){
int number = array[size];
int current_index = size ;
int parent_index = (current_index - 1) / 2 ;
int parent = array[parent_index] ;
while(number > parent){
array[current_index] = array[parent_index] ;
current_index = parent_index ;
parent_index = (current_index - 1) / 2 ;
if(current_index==0)
break ;
parent = array[parent_index] ;
}
array[current_index] = number ;
}
相关文章推荐
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 数据结构与算法学习-堆排序
- 【数据结构与算法】堆排序
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 【数据结构与算法】【排序】堆排序的代码实现
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 数据结构与算法——堆排序
- 数据结构与算法之排序:堆排序、归并排序及快速排序
- 数据结构与算法--优先队列和堆排序
- 【数据结构与算法】堆排序
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 数据结构与算法——堆排序
- 【数据结构与算法】内部排序之四:归并排序和快速排序(含完整源码)
- 【数据结构与算法】快速排序
- [数据结构与算法]两级页表(Two-Level Page Table)
- 数据结构与算法之哈希冲突解决-链地址法与开放定址法对比
- 数据结构与算法 2、单向/双向链表
- 数据结构与算法(4)----->链表、二分搜索