各種排序(二)

来源:https://www.cnblogs.com/poi-bolg-poi/archive/2019/12/08/12006080.html
-Advertisement-
Play Games

本文中 $n$ 代表著待排序序列的長度。 演算法是否穩定:若 $a_i = a_j \ , \ i 1; merge(l,mid),merge(mid+1,r); mergesort(l,r,mid);return;//遞歸,先給小區間排序後大區間。 } merge(1,n); 上張圖理解一下: 可用 ...


  • 本文中 \(n\) 代表著待排序序列的長度。
  • 演算法是否穩定:若 \(a_i = a_j \ , \ i < j\),排序後若\(i < j\) 則穩定,反之不穩定。(可能有點歧義湊活看)

歸併排序

用了二分的思想。
在遞歸的過程中不斷將需要排序的區間縮小,使小區間有序後,再使大區間變得有序會簡單很多。

最差時間複雜度:\(O(nlogn)\)
最優時間複雜度:\(O(nlogn)\)
平均時間複雜度:\(O(nlogn)\)
演算法是否穩定:是

void mergesort(int l,int r,int mid) {//將[l,r]區間排好序
    int i=l,j=mid+1,cnt=0;//[l,mid]與[mid+1,r]已經有序了,所以可以進行下麵的操作。
    while(i<=mid&&j<=r) temp[++cnt]=a[i]<=a[j]?a[i++]:a[j++];
    while(i<=mid) temp[++cnt]=a[i++];
    while(j<=r) temp[++cnt]=a[j++];
    for(int i=l;i<=r;++i) a[i]=temp[i-l+1];
}
void merge(int l,int r) {//不斷將區間縮小
    if(l==r) return;
    int mid=(l+r)>>1;
    merge(l,mid),merge(mid+1,r);
    mergesort(l,r,mid);return;//遞歸,先給小區間排序後大區間。
}
merge(1,n);

上張圖理解一下:

可用於求逆序對的個數。

堆排序

不想寫,咕咕咕。

快速排序


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • leetcode 237. 刪除鏈表中的節點 鏈接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 輸入: head = [4,5,1,9], node = 5輸出: [4,1,9]解釋: 給定你鏈表中值為 5  ...
  • 本篇文章我們主要探討 一下如果 語句中有 ,這種情況下 語句還會執行嗎?其實JVM規範是對這種情況有特殊規定的,那我就先上代碼吧! 對於上述代碼,我們有以下幾個問題,來自測一下吧: 1. 如果在 try 語句塊里使用 return 語句,那麼 finally 語句塊還會執行嗎? 2. 如果執行,那麼 ...
  • 題目要求: 分析文件’課程成績.xlsx’,至少要完成內容:分析1)每年不同班級平均成績情況、2)不同年份總體平均成績情況、3)不同性別學生成績情況,並分別用合適的圖表展示出三個內容的分析結果。 廢話不多,直接上代碼 1每年不同班級平均成績情況: # 導入xlrd模塊import xlrdfrom ...
  • 前言本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。作者:weixin_45189038直接上知識點: 1. 註釋 單行註釋:在一行文字前面加#(快捷鍵:ctrl+/) 多行註釋:將註釋內容寫在三個英文雙引號或者單引號裡面(但是一 ...
  • 這個問題,是python與Pycharm不相容導致,解決辦法將Pycharm升級最新版本 ...
  • Shiro是一個功能強大且易於使用的Java安全框架,主要功能有身份驗證、授權、加密和會話管理,本文實現一個簡單的身份驗證例子。 ...
  • 人生從來沒有固定的路線,決定你能夠走多遠的,並不是年齡,而是你的努力程度。無論到了什麼時候,只要你還有心情對著糟糕的生活揮拳宣戰,都不算太晚。遲做,總比不做好! ...
  • # 集美大學各省錄取分數分析(學號尾數為2,3同學完成) # 分析文件‘集美大學各省錄取分數.xlsx’,完成: # 1)集美大學2015-2018年間不同省份在本一批的平均分數,柱狀圖展示排名前10的省份, # 2)分析福建省這3年各批次成績情況,使用折線圖展示結果,並預測2019年錄取成績(數據... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...