原创 算法導論2.3-5答案 分別採用遞歸與非遞歸方式實現二分查找 c++實現

//2.3-5 採用遞歸方式的二分查找,注意輸入的數組是有順序的 #include <iostream> #include <vector> using namespace std; vector<int>::size_type Bi

原创 基數排序 C語言實現

//Radix_Sort #include <stdlib.h> #include <stdio.h> /*被排序元素的最大位數,4則意味着只能排序< 10000 的數*/ #define WIDTH 4 #define MAXK 1

原创 算法導論10.1-2答案

//10.1-2 說明如何用一個數組A[1...n]來實現兩個棧,使得兩個棧中的元素總數不到n時,兩者都不會發生上溢。注意PUSH和POP操作的時間應爲O(1) #include <stdio.h> #include <stdlib.h

原创 桶排序

#include <iostream>    2 #include <list>    3     4 using namespace std;    5     6 struct Node    7 {    8     double

原创 算法導論第二版 習題2.1-4答案

#include <stdio.h> #define n 5 void main() { int A[n]={0,1,1,0,1},B[n]={0,0,1,1,0}; int C[n+1]={0};

原创 計數排序

//計數排序 # include<stdio.h> void Count_Sort(int A[],int len,int B[],int k) { int c[10]; for(int i=0;i<=k;i+

原创 容器迭代器失效問題

衆所周知當使用一個容器的insert或者erase函數通過迭代器插入或刪除元素"可能"會導致迭代器失效,因此很多建議都是讓我們獲取insert或者erase返回的迭代器,以便用重新獲取新的有效的迭代器進行正確的操作:view plainc

原创 算法導論第二版2.2-2 答案

#include <iostream> #include <vector> using namespace std; int main() { vector<int> A; int x; c

原创 尋找逆序對的算法,要求運行時間爲O(nlgn),算法導論答案

#include <stdio.h> int merge_inversion(int A[],int p,int q,int r) { int n1,n2,i,j,k,num=0; n1=q-p+1;

原创 歸併排序 (不採用哨兵) 算法導論2.3-2答案

# include<stdio.h> #define NULL 0 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i =

原创 算法導論課後題 2.3-7答案

題目:請給出一個運行時間爲O ( n lg n ) 的算法,使之能在給定一個由n個整數構成的集合S和另一個整數x時,判斷出S中是否存在有兩個其和等於x的元素。 解決該問題的算法如下: 1.對S中的元素進行排序(需要運行時間爲O ( n l

原创 快速排序的隨機化算法

//快速排序的隨機化算法 #include <stdio.h> #include <stdlib.h> #define N 10 //Exchange the value void swap(int *p,int *q) { int

原创 基數排序

//爲什麼不從高位到低位排序,首先輸入的所有的數中的各個數的位數不一定相同,只通過對高位進行一次排序是不行的, #include <iostream> using namespace std; const int base=10;// s

原创 利用矩陣求解fibonacci數列 時間複雜度爲O(lgn)

//利用矩陣求解fibonacci數列 #include <cassert> #include <stdio.h> /////////////////////////////////////////////////////////////

原创 理解何時執行哪個構造函數和複製控制成員

C++ Primer第四版 習題13.14 理解複製控制成員和構造函數的一個良好方式是定義一個簡單的類,該類具有這些成員,每個成員打印自己的名字: struct Exmpl {    Exmpl() {std::cout << "Exm