[轉]直觀感覺排序算法

http://www.blogjava.net/todayx-org/archive/2012/01/08/368091.htmlphp

 

1 快速排序

介紹:html

  快速排序是由東尼·霍爾所發展的一種排序算法。在平均情況下,排序 n 個項目要Ο(n log n)次比較。在最壞情況下則須要Ο(n2)次比較,但這種情況並不常見。事實上,快速排序一般明顯比其餘Ο(n log n) 算法更快,由於它的內部循環(inner loop)能夠在大部分的架構上頗有效率地被實現出來,且在大部分真實世界的數據,能夠決定設計的選擇,減小所需時間的二次方項之可能性。java

步驟:算法

  • 從數列中挑出一個元素,稱爲 "基準"(pivot),
  • 從新排序數列,全部元素比基準值小的擺放在基準前面,全部元素比基準值大的擺在基準的後面(相同的數能夠到任一邊)。在這個分區退出以後,該基準就處於數列的中間位置。這個稱爲分區(partition)操做。
  • 遞歸地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

排序效果:數據結構

詳細過程:架構

 

 

2 歸併排序

介紹:ide

  歸併排序(Merge sort,臺灣譯做:合併排序)是創建在歸併操做上的一種有效的排序算法。該算法是採用分治法(Divide and Conquer)的一個很是典型的應用oop

步驟:.net

  • 申請空間,使其大小爲兩個已經排序序列之和,該空間用來存放合併後的序列
  • 設定兩個指針,最初位置分別爲兩個已經排序序列的起始位置
  • 比較兩個指針所指向的元素,選擇相對小的元素放入到合併空間,並移動指針到下一位置
  • 重複步驟3直到某一指針達到序列尾
  • 將另外一序列剩下的全部元素直接複製到合併序列尾

排序效果:設計

詳細過程:

 

 

3 堆排序

介紹:

  堆積排序(Heapsort)是指利用這種數據結構所設計的一種排序算法。堆是一個近似徹底二叉樹的結構,並同時知足堆性質:即子結點的鍵值或索引老是小於(或者大於)它的父節點。

步驟:

(比較複雜,本身上網查吧)

排序效果:

詳細過程:

(暫無)

4 選擇排序

介紹:

  選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工做原理以下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小元素,而後放到排序序列末尾。以此類推,直到全部元素均排序完畢。

排序效果:

詳細過程:

 

 

5 冒泡排序

介紹:

  冒泡排序(Bubble Sort,臺灣譯爲:泡沫排序或氣泡排序)是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,若是他們的順序錯誤就把他們交換過來。走訪數列的工做是重複地進行直到沒有再須要交換,也就是說該數列已經排序完成。這個算法的名字由來是由於越小的元素會經由交換慢慢「浮」到數列的頂端。

步驟:

  1. 比較相鄰的元素。若是第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素做一樣的工做,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對全部的元素重複以上的步驟,除了最後一個。
  4. 持續每次對愈來愈少的元素重複上面的步驟,直到沒有任何一對數字須要比較。

排序效果:

詳細過程:

 

 

6 插入排序

介紹:

  插入排序(Insertion Sort)的算法描述是一種簡單直觀的排序算法。它的工做原理是經過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,一般採用in-place排序(即只需用到O(1)的額外空間的排序),於是在從後向前掃描過程當中,須要反覆把已排序元素逐步向後挪位,爲最新元素提供插入空間。

步驟:

  • 從第一個元素開始,該元素能夠認爲已經被排序
  • 取出下一個元素,在已經排序的元素序列中從後向前掃描
  • 若是該元素(已排序)大於新元素,將該元素移到下一位置
  • 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
  • 將新元素插入到該位置中
  • 重複步驟2

排序效果:

 (暫無)

詳細過程:

 

 

7 希爾排序

介紹:

  希爾排序,也稱遞減增量排序算法,是插入排序的一種高速而穩定的改進版本。

  希爾排序是基於插入排序的如下兩點性質而提出改進方法的:

  • 插入排序在對幾乎已經排好序的數據操做時, 效率高, 便可以達到線性排序的效率
  • 但插入排序通常來講是低效的, 由於插入排序每次只能將數據移動一位

排序效果:



歷史上的今天
回顧歷史的今天,歷史就像生活的一面鏡子;能夠了解歷史的這一天發生的事件;借古能夠鑑今;歷史是不能忘記的.要記住歷史的每一天
http://www.todayx.org/
相關文章
相關標籤/搜索