第八章 線性時間排序8.3 基數排序演算法導論上對基數排序的演算法描述只有兩行。。。 微言大義的說。。。RADIX-SORT(A, d)1 for i ← 1 to d2 do use a stable sort to sort array A on digit iC++代碼 1 #include <iostream> 2 3 using namespace std; 4 5 //求數組中數位最大位元 6 int maxDigit(int* arr,int digit)
第八章 線性時間排序8.2 計數排序這個演算法比較簡單。計數排序的基本思想就是對每一個輸入元素x,確定出小於x的元素個數。然後就可以把x直接放到它的最終輸出數組的位置上。例如如果有17個元素小於x,則x旅遊屬於第18個輸出位置。假定輸入的日企 數組A[1..n],length[A]=n。另外還需要兩個數組:存放排序結果的B[1..n],以及提供臨時儲存區的C[0..k]。COUNTING-SORT(A, B, k)1 for i ← 0 to k2 do C[i] ← 03 for j
第六章 堆排序主要分為三個子演算法。演算法MAX-HEAPIFY(A, i)為調整堆,演算法BUILD-MAX-HEAP(A)為建堆,演算法HEAPSORT(A)為堆排序。運行環境Code::Blocks 10.05。MAX-HEAPIFY(A, i) 1 l ← LEFT(i) 2 r ← RIGHT(i) 3 if l ≤ heap-size[A] and A[l] > A[i] 4 then largest ← l 5 else largest ← i 6 if r ≤
第二章 演算法入門兩個有序數組的合并這個演算法我的實現跟演算法導論上的實現有些許區別。我沒有使用《演算法導論》上的哨兵位的方法。而且直接判斷有沒有到數組的末尾。不過為了跟書上保持一致,我的虛擬碼還是使用演算法導論上的虛擬碼。演算法描述:MERGE(A, p, q, r)是把儲存在A[p...q]和A[q+1...r]這兩部分中的有序子序列合并到A[p...r]並使其有序。兩個子數組的長度分別為int n1=q-p+1; int n2=r-q;
過幾個月要面試了,最近在看《演算法導論》,想把裡面的演算法都用C++實現一遍。今天是第一個演算法,比較簡單。第二章 演算法入門插入排序虛擬碼實現INSERTION-SORT(A) 《演算法導論》P101 for j ← 2 to length[A]2 do key ← A[j]3 //Insert A[j] into the sorted sequence A[1 ‥ j - 1].4 i ← j - 15 while i > 0