原创 谷歌面試題-100層樓兩個棋子的問題

谷歌公司有道面試題:有一個100層高的大廈,從這個大廈的某一層扔下棋子恰好就會碎(稱這一層爲臨界層)。請你用手中的兩個玻璃圍棋子,找出一個最優的策略來得知那個臨界層。 解法:假設在最壞情況下投擲的最少次數爲x,即無論臨界層爲幾,

原创 操作系統之進程那些事

這篇博客主要講解進程、線程的概念,包括進程、線程的同步、通信等方法。 進程是一個程序及其數據在處理機上順序執行時所發生的活動。進程是進程實體(包括二進制文件、數據和進程控制塊PCB)的運行過程,是系統進行資源分配和調度的一個獨立

原创 最近點對問題

問題描述:以(x,y)表示一個點,隨機生成n個點,求出最近的一對點。 解法一:蠻力法 思路:用一個變量minD記錄最近的距離,初始值爲無窮大(int的最大表示範圍),然後在n個點選取2個點(組合問題,一共有C n取2種可能),計算

原创 C & C++ 複習筆記

這篇文章主要是我複習一些C和C++時記錄的一些知識點,以備不時之需,常常瀏覽,溫故而知新~ union和struct union爲聯合體、共用體,而struct爲結構體;他們的相同點是:都可以包含多種數據類型。具體的使用規則見:聯

原创 簡單選擇排序

簡單選擇: 簡單選擇顧名思義,就是第一次選擇最小的元素放到數組第一位,第二次選擇次小的放到數組第二位,以此類推,循環n次,直到數組有序爲止。 //選擇排序算法 void select_sort(int * a, int n) {

原创 C++後臺開發面試筆記

前言 我想先說我的感受: 專精計算機的一個方向,在平時學習的過程中注意積累,遇到問題最好深入瞭解,不要淺嘗輒止。如果堅定了走程序員道路,就要在計算機方面保持興趣與好奇心。平時廣泛涉獵相關的領域(比如你搞後臺就要懂安全),並且注重結

原创 插入排序

中心思想:考慮你正在鬥地主,對方發給你一堆牌,你右手摸牌,左手拿牌,第一次摸到10放到左手,第二次摸到3就放到10左邊,第三次摸到K放10右邊,左手上的牌一直保持有序,直到左手拿着所有的牌爲止。這就是插入排序。 插入排序從第二個

原创 操作系統之存儲管理

今天我們來看一下操作系統的存儲管理。 目的 存儲器是計算機結構中必不可少的一部分,每個用戶程序都需要向操作系統申請存儲資源,那麼操作系統在存儲管理髮揮怎樣的作用呢? 主要有一下三點: 1、爲用戶使用存儲空間提供方便。用戶只需要

原创 操作系統之進程調度

世界上很多問題都是跟資源分配和任務調度有關,而學會了操作系統的進程調度算法,我覺得也會給你在做事的時候帶來一些啓發吧。 在現代的操作系統中,有很多進程在內存中。有的正在運行,有的正等待某個事件的發生(比如等待用戶敲擊鍵盤)。那麼

原创 小明學C++第四篇:數的表示和運算、函數調用、流水線

在小明學C++第二篇,我們看到,小明用了整型、浮點型等數據類型,那麼這些數據類型在計算機裏面是怎麼表示的?它們的運算操作又是怎麼實現的?此外,主函數調用面積計算函數calculate的時候到底發生了什麼?經過翻譯後,一條高級語言編寫的語

原创 小明學C++第三篇:編譯原理

懶惰是人類第一生產力,抽象是計算機偉大的思想。我們都知道計算機只認識0和1,而且是按照馮諾依曼結構組織起來的。數據跟指令都存放在主存裏,根據不同的指令週期來區分是數據還是指令。在早期的計算機,人類必須編寫很長只有0和1的機器語言來跟計算

原创 操作系統之磁盤管理

磁盤存儲器具有容量大、存取速度快、支持隨機存取的特點,因此被廣泛應用於計算機系統中。對於操作系統來說,管理好磁盤的三大要求和目標是: (1)合理有效利用磁盤:採用合理的文件存儲空間分配算法,儘量減少磁盤碎片,提高硬盤的利用率;

原创 2017騰訊校招筆試編程題-拼湊零錢

今天剛剛參加了2017年的騰訊校招在線筆試,其中有一道編程題是這樣的:小明很富有,有幣值爲2^n(n=0,1,2,3)的硬幣各兩個,即有兩個1塊錢的硬幣,有兩個2塊錢的硬幣,有兩個四塊錢的硬幣。。。,現在輸入一個正整數數m(0<m<10^

原创 小明學c++系列之第一篇:網絡篇

胡適先生曾說:“發表是吸收的利器”,於是我寫下這篇文章。我看了一些計算機基礎,我感覺裏面的知識都沒有活力,於是,我希望用我的方式將計算機的工作機制正確地、簡潔地、有趣地講明白。這篇文章適用於沒有計算機基礎但希望瞭解計算機的人以及有一些計

原创 二叉排序樹、平衡二叉樹以及紅黑樹

現實生活中,有很多找東西的例子,比如在學校找某個人,在驛站找快遞,在信息登記表上查找某個人的信息,那麼在計算機科學中,具體有哪些可以加快查找的算法?下面我們就來看看其中的動態查找算法,動態查找的意思是當你查找某個鍵值的信息,若存在則輸出