实现通过javascript来写最大堆排序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> var heapArray = [1,2,3,4,5,6,7,8,9];//这里构建的是最大堆 function buildMaxHeap(heapArray, allIndex) { var lastIndex = Math.floor(heapArray.length / 2) - 1 + allIndex; for (var index = lastIndex; index >= allIndex; index--) { var lastLeftIndex = index * 2 + 1; if (lastLeftIndex >= heapArray.length) { continue; } var lastLeftData = heapArray[lastLeftIndex]; if (heapArray[index] <= lastLeftData) { heapArray[lastLeftIndex] = heapArray[index]; heapArray[index] = lastLeftData; buildMaxHeap(heapArray, lastLeftIndex); } var rightLastIndex = lastLeftIndex + 1; if (rightLastIndex >= heapArray.length) { continue; } if (heapArray[rightLastIndex] >= heapArray[index]) { var temp = heapArray[index]; heapArray[index] = heapArray[rightLastIndex]; heapArray[rightLastIndex] = temp; buildMaxHeap(heapArray, rightLastIndex); } } } function sortByHeap(heapArray){ var temp = heapArray.length; var data = ''; for (var i = 0; i < temp; i++) { buildMaxHeap(heapArray, 0); data += heapArray.shift()+','; } console.log('wori yo test', data); } sortByHeap(heapArray); </script> </body> </html>
最大堆排序输出(max heap sort)
最新推荐文章于 2022-08-08 15:57:26 发布