日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

堆排序代码实现

發(fā)布時(shí)間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 堆排序代码实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package com.atguigu.tree;import java.util.Arrays;/*** @創(chuàng)建人 wdl* @創(chuàng)建時(shí)間 2021/3/26* @描述*/ public class HeapSort {public static void main(String[] args) {//要求將數(shù)組進(jìn)行升序排序int arr[]={4,6,8,5,9};heapSort(arr);}//編寫一個(gè)堆排序的方法public static void heapSort(int arr[]){int temp=0;System.out.println("堆排序"); // //分步完成 // adjustHeap(arr,1,arr.length); // System.out.println("第一次"+ Arrays.toString(arr));//4,9,8,5,6 // adjustHeap(arr,0,arr.length); // System.out.println("第二次"+Arrays.toString(arr));//9,6,8,5,4//完成我們最終代碼//將無序序列構(gòu)建成一個(gè)堆,根據(jù)升序需求求選擇大頂堆或小頂堆for (int i=arr.length/2-1;i>=0;i--){adjustHeap(arr,i,arr.length);}for(int j=arr.length-1;j>0;j--){//交換temp=arr[j];arr[j]=arr[0];arr[0]=temp;adjustHeap(arr,0,j);}System.out.println(Arrays.toString(arr));//9,6,8,5,4}/***功能:完成將以i對應(yīng)的非葉子節(jié)點(diǎn)的樹調(diào)整成大頂堆* 舉例int arr[]={4,6,8,5,9};=>i=1=>adjustHeap=>得到4,9,8,5,6* 如果我們再次調(diào)用adjustHeap傳入的是i=0=>得到9,6,8,5,4** @param arr 待調(diào)整的數(shù)組* @param i 表示非葉子節(jié)點(diǎn)在數(shù)組中索引* @param length 表示對多少個(gè)元素繼續(xù)進(jìn)行調(diào)整,length是在逐漸的減少*///將一個(gè)數(shù)組(二叉樹),調(diào)整成一個(gè)大頂堆public static void adjustHeap(int arr[],int i,int length){int temp=arr[i];//先取出當(dāng)前元素的值,保存在臨時(shí)變量//開始調(diào)整//1.k=i*2+1 k是i節(jié)點(diǎn)的左子節(jié)點(diǎn)for(int k=i*2+1;k<length;k=k*2+1){if(k+1<length&&arr[k]<arr[k+1]){//說明左子節(jié)點(diǎn)的值小于右子節(jié)點(diǎn)的值k++;//k就指向右子節(jié)點(diǎn)}if(arr[k]>temp){//如果子節(jié)點(diǎn)大于父節(jié)點(diǎn)arr[i]=arr[k];//把較大的值賦給當(dāng)前節(jié)點(diǎn)i=k;//!!!i指向k,繼續(xù)循環(huán)比較}else{break;//!}}//當(dāng)for循環(huán)結(jié)束后,我們已經(jīng)將以i為父節(jié)點(diǎn)的樹的最大值,放在了最頂(局部)arr[i]=temp;//將temp值放到調(diào)整后的位置}}

總結(jié)

以上是生活随笔為你收集整理的堆排序代码实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。