原创 十大排序算法概述

圖解選擇排序(Selection Sort) 圖解冒泡排序(Bubble Sort) 圖解插入排序(Insertion Sort) 圖解希爾排序(Shell Sort) 圖解快速排序(Quick Sort) 圖解歸併

原创 圖解歸併排序(Merge Sort)

歸併排序(Merge Sort) 歸併排序是建立在歸併操作上的一種有效的排序算法。該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合併,得到完全有序的序列;即先使每個子序列有序,再使子序列段

原创 圖解基數排序(Radix Sort)

基數排序(Radix Sort) 基數排序是一種非比較型整數排序算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。由於整數也可以表達字符串(比如名字或日期)和特定格式的浮點數,所以基數排序也不是隻能使用於整數。 基數排序

原创 排序算法穩定性的意義

排序算法的穩定性 對於一般的算法,我們一般只需要分析它的時間複雜度和空間複雜度,但是對於排序算法來說,我們還有一個非常重要的分析指標,那就是排序算法的穩定性。穩定性是指,在需要進行排序操作的數據中,如果存在值相等的元素,在排序前後,相等元

原创 圖解桶排序(Bucket Sort)

桶排序(Bucket Sort) 桶排序是計數排序的升級版。它利用了函數的映射關係,高效與否的關鍵就在於這個映射函數的確定。桶排序 (Bucket sort)的工作的原理:假設輸入數據服從均勻分佈,將數據分到有限數量的桶裏,每個桶再分別排

原创 圖解計數排序(Counting Sort)

計數排序(Counting Sort) 計數排序不是基於比較的排序算法,其核心在於將輸入的數據值轉化爲鍵存儲在額外開闢的數組空間中。 作爲一種線性時間複雜度的排序,計數排序要求輸入的數據必須是有確定範圍的整數。 算法描述 找出待排序的數組

原创 圖解選擇排序(Selection Sort)

選擇排序(Selection Sort) 選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然

原创 圖解希爾排序(Shell Sort)

希爾排序(Shell Sort) 1959年Shell發明,第一個突破O(n2)的排序算法,是簡單插入排序的改進版。它與插入排序的不同之處在於,它會優先比較距離較遠的元素。希爾排序又叫縮小增量排序,該方法實質上是一種分組插入方法。 希爾排

原创 圖解堆排序(Heap Sort)

堆排序(Heap Sort)   堆排序是利用堆這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它是不穩定排序。首先簡單瞭解下堆結構。 堆   堆是具有以下性質的完全二叉樹:每個

原创 圖解冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort) 算法描述 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個; 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數; 針對所有的元素重複以上的步驟,除了最後一

原创 圖解快速排序(Quick Sort)

快速排序(Quick Sort) 快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要 Ο(nlogn) 次比較。在最壞狀況下則需要 Ο(n2) 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 Ο(nl

原创 圖解插入排序(Insertion Sort)

插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。 算法描述 一般來說,插

原创 解決Coursera課程視頻無法播放的問題

打開Coursera上面的視頻,發現無法播放(Coursera是大型公開在線課程項目,由美國斯坦福大學兩名計算機科學教授創辦。旨在同世界頂尖大學合作,在線提供網絡公開課程。)。 附上解決方案,以惠後來人。 1.以管理員身份打開任意文本編輯