原创 算法導論—矩陣鏈乘C/C++實現

原理見算法導論第三版P211—P215 代碼實現: #include <iostream> using namespace std; const int Max=100; int m[Max][Max],s[Max][Max],p[Max

原创 基數排序與桶排序C實現

一. 算法描述 基數排序(以整形爲例),將整形10進制按每位拆分,然後從低位到高位依次比較各個位。主要分爲兩個過程: (1)分配,先從個位開始,根據位值(0-9)分別放到0~9號桶中(比如53,個位爲3,則放入3號桶中) (2)收集,再

原创 數組元素的訪問方式—指針與下標

數組元素的訪問方式—指針與下標 《c和指針》中有一句話:下標絕對不會比指針更有效率,但指針有時會比下標更有效率! 在解釋這句話之前說上一句自己的想法:效率很重要,但是不能僅僅爲了提高點效率而犧牲某些比較重要的優勢,比如可讀性,很顯然,在數

原创 約瑟夫問題c++

問題描述:一堆猴子都有編號,編號是1,2,3 ...m,這羣猴子(n個)按照1-m的順序圍坐一圈,從第1開始數,每數到第m個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後一隻猴子,則該猴子爲大王。 解決1:使用數組存放 #def

原创 數據結構—數組實現兩個棧,不上溢

問題描述:說明如何用一個數組A[1..n]來實現兩個棧,使得兩個棧中的元素總數不到n時,兩者都不會發生上溢,注意PUSH和POP操作的時間應爲O(1)。(算法導論第三版P131) 思路:stack1,stack2的base分別在數組的兩端

原创 數據結構—單鏈表的插入

數據結構—單鏈表的插入 關於單鏈表的概念以及一些基本的知識就不說明了,直接上代碼! 整個鏈表有一個根節點,用以指向第一個元素,在插入的過程中要考慮幾個問題: 1、插入的位置是不是第一個節點與根節點之間 2、插入的位置是否是在最後 (要考慮

原创 面試題1——棧的最大值問題

面試題——棧的最大值問題 常數時間求棧的最大值 問題描述: 一個棧stack,具有push和pop操作,其時間複雜度皆爲O(1)。 設計算法max操作,求棧中的最大值,該操作的時間複雜度也要求爲O(1)。 可以修改棧的存儲方式,

原创 數據結構—希爾排序

希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序算法的一種更高效的改進版本。希爾排序,是非穩定排序算法。 基本思想:將無序數組分割爲若干個子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,對各個子

原创 高斯混合模型

這篇討論使用期望最大化算法(Expectation-Maximization)來進行密度估計(density estimation)。       與k-means一樣,給定的訓練樣本是,我們將隱含類別標籤用表示。與k-means的硬指定

原创 算法員而非程序員

作爲第四屆圖靈獎得主,AI奠基人之一的Marvin,他發表的演講主題是關於形式和內容的討論。他的主論調就是內容要強於形式,而且我們目前過分關注了形式而導致計算機的發展軌跡產生了偏差。 他的觀點一經發出就引來了諸多的爭論,有支持也有批判。本

原创 數據結構—單鏈表的排序以及逆置

1、單鏈表排序: 單鏈表的排序中,只需要交換兩個節點的值即可,不需要改變指向 <span style="font-family:SimSun;font-size:18px;">typedef struct student { int

原创 算法導論—動態規劃之鋼條切割

       動態規劃和分治策略相似,不同的是,它針對的問題所分解出的小問題數量很多且很多是重複的。動態規劃就是使得這些重複的小問題只需要計算一次,避免重複計算。   鋼條切割問題:給定一段長度爲n英寸的鋼條和一個價格表pi(i=1,2,

原创 算法導論—最大子數組C/C++實現

原理實見算法導論第三版P39—P42: C代碼實現: <span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #include "limits.h" #de

原创 算法導論—堆排序C++實現

原理見算法導論第三版第六章: 以下是c++版本: <span style="font-size:18px;">#include <iostream> #include <vector> using namespace std; #defi

原创 數據結構—處理對列的上溢和下益問題

對應於算法導論中的P131,重寫ENQUEUE和DEQUEUE,使之能夠處理隊列的上溢和下益 #include <iostream> #include <string> using namespace std; #define MaxSi