Ⅰ java數據結構
首先明確,帶權路徑長度WPL最小的二叉樹稱作最優二叉樹或哈夫曼樹
那麼比如說有4個節點,分別帶權7,5,2,4如下ab兩圖
WPLa=7*2+5*2+2*2+4*2=36
WPLb=7*1+5*2+2*3+4*3=35
WPL=30*2+5*5*4+8*4*15*3+15*2+27*2=
不算了 口算不行... 看上式也知道你出現的概率越大,相當於基地越大,就給你乘個小的代價,必然是最優的。
Ⅱ Java框架,數據結構
早在Java 2中之前,Java就提供了特設類。比如:向量(Vector)、棧(Stack)、字典(Dictionary)、哈希表(Hashtable)這些類(數據結構)用來讓改賣存儲和操作對象組。雖然這些類都非常有用,但是它們缺少一個核心的,統一的主題。集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。除了集合,該框架(framework)也定義了幾個Map介面和類。Map里存儲的是鍵/值對。盡管Map不是collections,但是它們完全整合在集合中。
所有的集合框架都包含如下內容:
介面:是代表集合的抽象數據類型。介面允許集合獨立操縱其代表的細節。在面向對象的語言,介面通常形成一個層次。
實現(類):是集合介面的具體實現。從本質上講,它們是可重復使用的數坦逗據結構。
演算法:是實現集合介面的對象里的方法執行的一些有用的計算,例如:搜索和排序。這些演算法被稱為多態,那是因殲早為相同的方法可以在相似的介面上有著不同的實現。
集合框架的類和介面均在java.util包中。
Ⅲ Java 與 演算法+數據結構 (100分)
說數據結構沒用那是不可能的,但是要看你做什麼了。
比如說你要血java,如果你想搞網站方面的話就簡單了。
數據結構基本可以不用學,因為在web應用中,能用到的演算法的地方少之又少,幾乎就那麼幾個,想記不住都難。
但是如果你要往軟體方面和手軟方面發展的話就要學一部分了,但是這東西學是學不到的,能學到的只不過是思路,到時候自己發揮一下,想個演算法就行了,演算法這東西說難不難,難的東西有,但是沒有你能用到的。
像你這樣的情況我想說兩點:
首先,說你想從事演算法類的工作,那麼選擇什麼樣的語言都是一樣的,演算法肯定有,但是用到的都不多。剛進公司的時候一般是用不到演算法的,因為演算法都是別人想的,你也許有好的演算法,但是別人不一定採用,但是你的演算法基礎不要丟掉,因為等你當了項目經理後這個是必不可少的。
其次,你要知道,在學計算機的路上,很少有人能學什麼就做什麼,大家都在被社會潮流推動,想要不掉隊就只能隨波逐流。因為畢竟我們都不想一輩子寫代碼。大家都是拿這東西做個跳板。
學java的路很長,但是也很有趣,希望你能學好。我想以你的演算法基礎,以後想成為專業精英不是問題。加油吧。
Ⅳ Java演算法與數據結構代碼
第1題:我給你搭建演算法框架,具體需求,你只需往裡面寫Code即可:
publicclassProgram{
privatestaticfinalintN=6;
publicstaticvoidmain(String[]args){
Nodehead=newNode(-1,null);//定義頭指針,帶頭結點的單鏈表
for(inti=0;i<N;i++){
Nodee=newNode(i+1,null);
tailInsert(head,e);
}
//Test
Nodep=head;
while(p.getNext()!=null){
p=p.getNext();
}
}
/**
*@paramhead實施尾插法演算法的單鏈表頭指針
*@parame所需的元素
*/
privatestaticvoidtailInsert(Nodehead,Nodee){
Nodep=head;
while(p.getNext()!=null){
p=p.getNext();//尋訪單鏈表,直至到達單鏈表末尾
}
//實施尾插法
p.setNext(e);
}
}
classNode{
privateintid;//編號
privateNodenext;//單鏈表後繼指針
privateStringvote;//選票
publicNode(){}
publicNode(intid,Nodenext){
super();
this.id=id;
this.next=next;
}
publicNode(intid,Nodenext,Stringvote){
super();
this.id=id;
this.next=next;
this.vote=vote;
}
@Override
publicStringtoString(){
return"Node[id="+id+",next="+next+"]";
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicNodegetNext(){
returnnext;
}
publicvoidsetNext(Nodenext){
this.next=next;
}
}
第2題:參看我以前的回答:https://..com/question/431512924412893084
演算法思想已經寫的清楚得不能在清楚了。轉成Java就是小菜一碟。
Ⅳ 數據結構與問題求解(Java語言版)(第4版)圖書簡介
數據結構與演算法是程序設計的基礎,也是計算機科學的核心。本書為計算機科學專業的學生設計,首先介紹數據結構,隨後深入高級數據結構和演算法分析。它採用獨特方法,將數據結構的使用與編程分離,利用Java集合類API,幫助學生理解面向對象編程,從用戶角度分析需求,再以設計者角度編程。本書從抽象思維出發,採用Java語言,重點從使用轉向實現,鼓勵學生利用現有組件設計大型項目。軟體開發原則,如封裝和信息隱藏,是本書的核心。演算法部分涵蓋了運行時間分析、遞歸、排序和數據結構介紹。全書分為五部分,從基礎知識到高級數據結構,內容嚴謹全面,結構合理,適合教師根據學生需求定製課程。本書為專業人員提供真實世界代碼,也為初學者提供學習路徑,既適合基礎學習,也可作為進階教材。每章末尾提供練習,鼓勵學生親手構建應用程序。
隨著數據結構課程的發展,封裝和信息隱藏等原則變得越來越重要。本書遵循這一趨勢,深入淺出地介紹數據結構與演算法。在演算法部分,運行時間分析、遞歸、排序和基本數據結構是核心內容。全書分為五個章節,涵蓋從基礎知識到高級數據結構的全面內容。本書內容嚴謹、全面,結構組織合理,是計算機科學教育的理想教材。每章末的練習和項目構建任務,旨在加深學生對所學內容的理解,培養實際應用能力。本書不僅適用於數據結構初學者,也為專業人員提供了深入學習的資源。
數據結構與演算法是計算機科學的基石。本書作為計算機科學專業的教材,以Java語言為基礎,系統介紹了數據結構與演算法的核心概念。通過分離數據結構的使用與編程,幫助學生掌握面向對象編程的精髓。本書強調從抽象思維出發,採用實踐導向的教學方法,從需求分析到編程設計,逐步引導學生深入理解數據結構與演算法。隨著課程內容的發展,封裝和信息隱藏等原則成為關注焦點。本書覆蓋了運行時間分析、遞歸、排序和基本數據結構等關鍵演算法,幫助學生構建堅實的理論基礎。全書分為五個部分,從基礎知識到高級數據結構,內容豐富全面,結構清晰合理,是計算機科學教育不可或缺的資源。每章末的練習和項目構建任務,旨在提升學生的學習效果和實際操作能力,使本書成為從初學者到專業人員的綜合學習工具。