原创 快速排序的分析與實現
快速排序是一種使用性非常強的排序算法,雖然它最壞的情況下時間複雜度O(N^2),但平均時間複雜度是O(N*logN),並在內存的使用、程序算法的複雜性上表現優秀,尤其是對快速排序進行隨機化的可能,快速排序是最使用的一種算法之一。 算法思想
原创 選擇排序
下面我介紹兩種選擇排序的方法: 一.選最小的或最大的(我以最小的爲列) 這種方法的思路爲: 1.在數組中選出最小的數值,放在a[0]位置。 2.選出次小的放在a[1]位置。
原创 linx中的信號量
信號量的本質是一種數據操作鎖,它本身不具有數據交換的功能,而是通過控制其他的通信資源(文件,外部設備)來實現進程間通信, 它本身只是一種外部資源的標識。信號量在此過程中負責數據操作的互斥、同步等功能。 信號量的工作原理由於信號量只
原创 socket編程
在TCP/IP協議中,IP地址+TCP/UDP端口號標示網絡通信中唯一的進程,“IP+端口號”稱爲socket。1.網絡字節序發送主機通常將發送緩衝區中的數據按內存地址從低到高的順序發出,接收主機把從網絡上接到的字節依次保存在接收緩衝區中,
原创 linux中的命名管道(FIFO)
管道只能用於親緣關係之間的通信,而FIFO中,只要可以訪問路徑,就可以進行通信。 FIFO按照先進先出的原則進行通信,第一個被寫入的數據首先從管道中讀出。創建命名管道的系統函數有兩個: mknod和mkfifo。兩個函數均定義在頭文件sys
原创 linux中的管道
管道是一種最基本的IPC機制,由pipe函數創建:#include <unistd.h> int pipe(int filedes[2]); 調用pipe函數就是在內核區開闢一塊緩衝區(稱爲管道)。filedes[0]指向管道的讀端,
原创 學生信息管理系統
學生信息管理系統包括了輸入、查詢、修改、刪除等操作。代碼:#define MAX 1000//最大存儲人數 //個人信息 typedef struct Student { char num[10];//編號
原创 Linux下模擬實現進度條
進度條是什麼?進度條就是在你下載文件、軟件、遊戲等出現的進度,它會顯示你在有百分之多少就能下載好這個東西。 由於自己的好奇,我就在Linux下實現了這個東西。我的實現思路: 1.給一個數組,這個數組必須能保存下100個字符。
原创 Linux下的進程控制塊(PCB)
進程在操作系統中都有一個戶口,用於表示這個進程。這個戶口操作系統被稱爲PCB(進程控制塊),在linux中具體實現是 task_struct數據結構。 進程控制塊(PCB)(系統爲了管理進程設置的一個專門的數據結構
原创 選擇排序
下面我介紹兩種選擇排序的方法: 一.選最小的或最大的(我以最小的爲列) 這種方法的思路爲: 1.在數組中選出最小的數值,放在a[0]位置。 2.選出次小的放在a[1]位置。 3.
原创 Linux中常見find命令的使用
Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了相當多的查找文件,功能很強大。由於find具有強大的功能,所以它的選項也很多,需要我們花時間來了解。 命令格式: find pat
原创 《將博客搬至CSDN》
由於各種原因,本人決定將博客搬遷到CSDN博客,以後有需要的可以來我的新博客地址來訪問:CSDN鏈接:http://blog.csdn.net/Raise_World
原创 插入排序(直接插入排序和希爾排序)
一、直接插入排序 它的思想:每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。 下面我來說一下我的思路: 1.第一趟比較前兩個數,然後把第二個數按大小插入到有序表中。
原创 布隆過濾器的分析和實現
騰訊曾經出過這樣一道面試題。 給40億個不重複的無符號整數,沒排過序。給一個無符號整數,如何快速判斷一個數是否在這40億個數中。 拿到這個題目,我們首先想到的是遍歷這40億的數字,然後一個一個找。顯然是行不通的。因爲這40億個