AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

我們一起聊聊C#堆排序算法

來源: 責編: 時間:2023-10-10 18:31:11 264觀看
導讀前言堆排序是一種高效的排序算法,基于二叉堆數據結構實現。它具有穩定性、時間復雜度為O(nlogn)和空間復雜度為O(1)的特點。堆排序實現原理構建最大堆:將待排序數組構建成一個最大堆,即滿足父節點大于等于子節點的特性。

前言

堆排序是一種高效的排序算法,基于二叉堆數據結構實現。它具有穩定性、時間復雜度為O(nlogn)和空間復雜度為O(1)的特點。cm028資訊網——每日最新資訊28at.com

堆排序實現原理

  1. 構建最大堆:將待排序數組構建成一個最大堆,即滿足父節點大于等于子節點的特性。
  2. 將堆頂元素與最后一個元素交換:將最大堆的堆頂元素與堆中的最后一個元素交換位置,將最大元素放到了數組的末尾。
  3. 重新調整堆:對剩余的n-1個元素進行堆調整,即將堆頂元素下沉,重新形成最大堆。
  4. 重復步驟2和3,直到堆中的所有元素都被排列好。

堆排序代碼實現

public static void HeapSort(int[] array)        {            int arrayLength = array.Length;            //構建最大堆            for (int i = arrayLength / 2 - 1; i >= 0; i--)                Heapify(array, arrayLength, i);            //依次取出堆頂元素,并重新調整堆            for (int i = arrayLength - 1; i >= 0; i--)            {                //將堆頂元素與當前最后一個元素交換                int temp = array[0];                array[0] = array[i];                array[i] = temp;                //重新調整堆                Heapify(array, i, 0);            }        }        private static void Heapify(int[] arr, int n, int i)        {            int largest = i; //假設父節點最大            int left = 2 * i + 1; //左子節點            int right = 2 * i + 2; //右子節點            //如果左子節點大于父節點,則更新最大值            if (left < n && arr[left] > arr[largest])                largest = left;            //如果右子節點大于父節點和左子節點,則更新最大值            if (right < n && arr[right] > arr[largest])                largest = right;            //如果最大值不是當前父節點,則交換父節點和最大值,并繼續向下調整堆            if (largest != i)            {                int swap = arr[i];                arr[i] = arr[largest];                arr[largest] = swap;                Heapify(arr, n, largest);            }        }        public static void HeapSortRun()        {            int[] array = { 19, 27, 46, 48, 50, 2, 4, 44, 47, 36, 38, 15, 26, 5, 3, 99, 888, 0, -1 };            Console.WriteLine("排序前數組:" + string.Join(", ", array));            HeapSort(array);            Console.WriteLine("排序后數組:" + string.Join(", ", array));        }

運行結果

圖片圖片cm028資訊網——每日最新資訊28at.com

總結

堆排序是一種高效的排序算法,通過構建最大堆和反復調整堆的操作,實現對數組的排序。其時間復雜度為O(nlogn),并且具有較好的穩定性和空間效率。但是由于其涉及大量的元素交換操作,所以在實際應用中,可能不如快速排序等算法效率高。cm028資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-12710-0.html我們一起聊聊C#堆排序算法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 兩萬字 + 十張圖剖析Spring依賴注入和SpEL表達式

下一篇: 再使用System.out.println()打印收拾東西回家

標簽:
  • 熱門焦點
  • Mate60手機殼曝光 致敬自己的經典設計

    8月3日消息,今天下午博主數碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍牙耳機產品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • Java NIO內存映射文件:提高文件讀寫效率的優秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數據。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 共享單車的故事講到哪了?

    來源丨海克財經與共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態LT(ID:LingTai_LT)如何成為一家偉大企業?答案一定是對&ldquo;勢&rdquo;的把握,這其中最關鍵的當屬對企業戰略的制定,且能夠站在未來看現在,即使這其中的
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯網品牌官01 擦邊少女空降熱搜,幕后推手曝光被網友譽為&ldquo;純欲天花板&rdquo;的女網紅井川里予,近期因為一組哥特風照片登上熱搜,引發了一場互聯網世界關于
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
Top