八大排序(簡化為五大)

2021-08-26 22:50:36 字數 1935 閱讀 5516

排序的功能:使用者提出要求,電腦根據使用者要求把那些記錄排列出來,給使用者帶來放方便。

排序的基本操作:

1、比較關鍵字的大小;

2、將記錄從乙個位置移動到另乙個位置。理解「基本」一詞。後面詳講關鍵字。

內部排序:要排序的資料都在記憶體中,稱為內部排序。五大排序都是內部排序。

外部排序:要排序的資料一部分在記憶體上,一部分在外存上。需要清楚的時,cpu不能直接訪問外存,什麼意思呢?也就是說,對外部的資料進行排列的時候,也是先把它們調到記憶體中,但是,它們的順序卻是整個(包括記憶體和外存)資料的序列。

五(八)大排序的總綱圖:

常見八排序就是五大排序,只不過,有些排序公升級了,這種公升級針對的是處理不同情況的公升級,並不是之前的版本不如公升級版(看情況)。例如:原先乙個排序方法,在資料少時,非常的使用,但是,在處理大量資料時就不行了,於是,我們針對這種情況,我們找到乙個更好的方法,當然,這種的好只能在處理大量是資料時體現,在處理少量資料時,他就不如之前的方法好。 1、

直接插入排序

待排序的資料,我們把它分成兩類,一類是按要求拍好了的,一類沒有排好;初始排好類中只有乙個資料,然後,我們按一定的次序從沒有排好的類中拿出乙個資料,讓這個資料和排好類中的資料比較大小,找到合適的位置後,就進行位置的改變;依次類推,知道沒排好的類中沒有資料為止。

希爾排序

你想一下,一組從小到大排好的資料,你再用直接插入排序把它從大到小的排一次,是十分的麻煩:每排乙個資料,這個資料就會插入在排好類中的最頭,那麼之前排好類中的資料就要都移動(或採取別的麻煩的方法來達到效果);希爾排序就很好的解決了這種麻煩,希爾排序的就是先把一定間隔的資料組成一組,這樣把所有資料組成了多組,然後在這一組中採用直接插入排序方法排序,每組內排好後,再把一定間隔的資料組成一組……注意:一定的間隔的含義是間隔越來越小,直到間隔為

1,也就是所有資料組成一組為止,間隔必須為奇數,因為我要保證間隔最後為1。

3、簡單選擇排序

把要排序的資料分成兩類,一類是排好類,另一類是待排類,初始時,我們預設排好類中沒有排好的資料,我們從待排類中按一定的順序選擇乙個資料,這個資料在待排類中是通過比較得出來的,然後把它放入排好類中,再從待排類中選擇乙個資料,這個資料在待排類中是通過比較得出來的,以此類推,知道待排類中沒有資料為止。這個和直接插入法的區別是:直接插入法,從待排類中選擇的資料,沒有在待排類中比較,而是,讓他和排好類中的資料進行比較;簡單選擇排序,從待排類中選擇的資料,是經過在待排類中比較得來的,不用再在排好類中比較了。

4、堆排序

中心思想:我們把存放在記憶體中資料,把資料形成完全二叉樹的形式,這個完全二叉樹的特點:雙親大於孩子(大頂堆)或孩子大於雙親(小頂堆),遞迴思想的定義。然後,我們把根和最後(根中序號最大)的乙個結點進行交換,並且把除最後的那個結點外的所有結點在排成乙個堆,然後,再交換,以此類推。**的實現思想:建立符合要求的完全二叉樹,然後,交換結點,再建立符合要求的完全二叉樹。**的實現採用了遞迴的思想,所以,一定要找到規律。

下接:五大排序(二)

八大排序(五)快速排序

快速排序使用了分治策略。一 選定乙個基準數 一般選取第乙個數 然後把大於它的數都放在它右邊,把小於它的數放左邊。二 這樣就把陣列分成左右兩部分。再將左右兩部分分別遞迴執行第一步,最終當執行第一步的部分大小為一時,遞迴完成,原陣列排序完成。public class quicksort 將剛剛找到的數插...

八大排序(五) 基數排序

基數排序與之前的其他七種排序方法都不同,它不需要比較關鍵字的大小。以下用乙個例子來講解基數排序 假設有乙個陣列 73,22,93,43,55,14,28,65,39,81 1.首先根據個位數的數值,在走訪數值時將它們分配至編號0到9的桶子中,分配結果如下圖 2.將這些桶子中的數值按順序重新串接起來,...

Python八大排序(五) 快速排序

如下 5.快速排序 交換排序 思想 先找乙個虛擬的中間值,按此中間值將所有資料分為兩部分,小於中間值的資料放在左邊大於中間值的放在右邊,在以同樣的方式處理 左右兩邊的資料直到排完序為止。def quick sort num list if len num list 2 return num list...