您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法-堆与堆排序

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 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  堆排序