排序 堆排序

2021-08-02 12:39:05 字數 1326 閱讀 3333

public

class heapsort

}system.out.println("}");

}public

static

void exchangeelements(int array, int index1, int index2)

}public

static

void main(string args) ;

system.out.println("before heap:");

arrayutils.printarray(array);

heapsort(array);

system.out.println("after heap sort:");

arrayutils.printarray(array);

}public

static

void heapsort(int array)

buildmaxheap(array);

for (int i = array.length - 1; i >= 1; i--)

}private

static

void buildmaxheap(int array)

int half = (array.length) / 2;

for (int i = half; i >= 0; i--)

}// 堆調整,使其生成最大堆

private

static

void maxheap(int array, int heapsize, int index)

// 如果右子節點比最大節點還大,那麼最大節點應該是右子節點

if (right < heapsize && array[right] > array[largest])

// 最後,如果最大節點和父節點不一致,則交換他們的值

if (index != largest)

arrayutils.printarray(array);

}public

static

void maxheaps(int array,int heapsize,int index)

int left = 2*index+1;

int right = 2*index+2;

int largest = index;

if(leftarray[left]>array[index])

if(rightarray[right]>array[largest])

if(index!=largest)

}}

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...

堆排序 模擬堆排序

838.堆排序 輸入乙個長度為n的整數數列,從小到大輸出前m小的數。輸入格式 第一行包含整數n和m。第二行包含n個整數,表示整數數列。輸出格式 共一行,包含m個整數,表示整數數列中前m小的數。資料範圍 1 m n 1051 m n 105,1 數列中元素 1091 數列中元素 109 輸入樣例 5 ...