原创 繼承與接口(二)

接口          Java語言不支持一個類有多個直接的父類(多繼承),但可以實現(implements)多個接口,間接的實現了多繼承.          接口使用有幾點需要注意的:          1、Java接口與c++的純虛基

原创 Java Hashtable分析

Hashtable的結構,採用的是數據結構中所說的鏈地址法處理衝突的方法   從上面的結構圖可以看出,Hashtable的實質就是一個數組+鏈表。圖

原创 各種排序算法的穩定性和時間複雜度小結

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序算法, 冒泡排序、插入排序、歸併排序和基數排序是穩定的排序算法。 冒泡法:  這是最原始,也是衆所周知的最慢的算法了。他的名字的由來因爲它的工作看來象是冒泡:  複雜度爲O(n*n)

原创 二叉樹的恢復

最近筆面老碰上這類題,老忘,因此寫個備忘。 二叉樹的三種遍歷常用於恢復:先序,中序,後序。對於先+中,後+中這兩種組合,對任意二叉樹的恢復都有唯一解,但對先+後的情況則不是,這種情況下要滿足要求:對所有非葉節點,其兩個子節點都存在,也即,

原创 strcpy和memcpy的區別

strcpy和memcpy都是標準C庫函數,它們有下面的特點。 strcpy提供了字符串的複製。即strcpy只用於字符串複製,並且它不僅複製字符串內容之外,還會複製字符串的結束符。 已知strcpy函數的原型是:char* strcpy

原创 棧和堆的區別

一、預備知識―程序的內存分配 一個由c/C++編譯的程序佔用的內存分爲以下幾個部分 1、棧區(stack)― 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。 2、堆區(heap)

原创 拷貝構造函數/深拷貝和淺拷貝

拷貝構造函數就是構造函數的參數的類型是該構造函數所在的類,即參數就是該類的一個對象。   Example: 1.Clock類: public class Clock {  private int hour;  private int

原创 面向對象技術

面向對象技術 (Object-Oriented Technology) 面向對象技術強調在軟件開發過程中面向客觀世界或問題域中的事物,採用人類在認識客觀世界的過程中普遍運用的思維方法,直觀、自然地描述客觀世界中的有關事物。面向對象技術的基

原创 各種排序算法比較

1.穩定性比較 插入排序、冒泡排序、二叉樹排序、二路歸併排序及其他線形排序是穩定的 選擇排序、希爾排序、快速排序、堆排序是不穩定的 2.時間複雜性比較 插入排序、冒泡排序、選擇排序的時間複雜性爲O(n2) 其它非線形排序的時間複雜性爲O

原创 [轉]java泛型

介紹 在Java SE 1.5之前,沒有泛型的情況的下,通過對類型Object的引用來實現參數的“任意化”,“任意化”帶來的缺點是要做顯式的強制類型轉換,而這種轉換是要求開發者對實際參數類型可以預知的情況下進行的。對於強制類型轉換錯誤的情

原创 KMP算法詳解(轉)

引記     此前一天,一位MS的朋友邀我一起去與他討論快速排序,紅黑樹,字典樹,B樹、後綴樹,包括KMP算法,唯獨在講解KMP算法的時候,言語磕磕碰碰,我想,原因有二:1、博客內的東西不常回顧,忘了不少;2、便是我對KMP算法的理解還不

原创 字符串代替、字符串轉換整數

#include "stdafx.h"   using namespace std;   //--------字符替代問題   char* Translate(char* pSrc, const char cFindChar, const

原创 Huffman樹

1 Huffman樹 Huffman樹又稱最優二叉樹,是一類帶權路徑長度最短的樹。 路徑是指從樹中一個節點到另一個節點之間的通路,路徑上的分支數目稱爲路徑長度。 樹的路徑長度爲從樹根到每個葉節點之間的路徑長度之和。 節點的帶權路徑長度爲從

原创 分析Java的垃圾回收機制

Java的堆是一個運行時數據區,類的實例(對象)從中分配空間。Java虛擬機(JVM)的堆中儲存着正在運行的應用程序所建立的所有對象,這些對象通過new、newarray、anewarray和multianewarray等指令建立,但是它

原创 理解面向對象

1.編程模型 所有計算機均由兩種元素組成:代碼和數據.精確的說,有些程序是圍繞着"什麼正在發生"而編寫,有些則是圍繞"誰正在受影響"而編寫的. 第一種編程方式叫做"面向過程的模型",按這種模型編寫的程序以一系列的線性步驟(代碼)爲特徵,可