原始碼和文件分享 基於C語言的八大排序演算法的比較

2021-09-27 11:07:48 字數 1079 閱讀 1418

一、專案內容

將氣泡排序,選擇排序,直接插入排序,希爾排序,快速排序,堆排序,歸併排序,基數排序等八種排序方法做橫向比較,針對相同的隨機資料,比較排序演算法所消耗的時間以及交換次數。

二、演算法描述

2.1 氣泡排序

演算法描述:

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數

針對所有的元素重複以上的步驟,除了最後乙個

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

2.2 選擇排序

演算法描述:

對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面「後乙個元素」現變成了「前乙個元素」,繼續跟他的「後乙個元素」進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置(下標),等到迴圈結束的時候,我們應該找到了最小的那個數的下標了,然後進行判斷,如果這個元素的下標不是第乙個元素的下標,就讓第乙個元素跟他交換一下值,這樣就找到整個陣列中最小的數了。然後找到陣列中第二小的數,讓他跟陣列中第二個元素交換一下值,以此類推。

2.3 直接插入排序

演算法描述:

每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。

第一趟比較前兩個數,然後把第二個數按大小插入到有序表中; 第二趟把第三個資料與前兩個數從前向後掃瞄,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃瞄以後就完成了整個排序過程。

2.4 希爾排序

演算法描述:

先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d22.5 快速排序

演算法描述:

設要排序的陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。

原始碼和文件分享 基於C語言的八大排序演算法的比較

將氣泡排序,選擇排序,直接插入排序,希爾排序,快速排序,堆排序,歸併排序,基數排序等八種排序方法做橫向比較,針對相同的隨機資料,比較排序演算法所消耗的時間以及交換次數。演算法描述 演算法描述 對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次...

原始碼和文件分享 基於C語言的八大排序演算法的比較

將氣泡排序,選擇排序,直接插入排序,希爾排序,快速排序,堆排序,歸併排序,基數排序等八種排序方法做橫向比較,針對相同的隨機資料,比較排序演算法所消耗的時間以及交換次數。演算法描述 演算法描述 對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次...

原始碼和文件分享 C語言的基於棧實現的表示式求值

一 目的 理解中綴表示式求值的過程 理解中綴轉字尾表示式求值的過程 掌握堆疊的應用 二 問題描述 綴表示式,其中包含括號,加減乘除,乘方等運算,利用中綴表示式,對表示式分析並求值 入的中綴表示式轉換為字尾形式,顯示字尾形式,並通過字尾形式求值 三 資料結構 運算子結構體 typedef struct...