真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中序遍歷代碼 中序遍歷怎么數(shù)

Java 先、中、后序遍歷方法的實(shí)現(xiàn)

前pre(root)

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),平南企業(yè)網(wǎng)站建設(shè),平南品牌網(wǎng)站建設(shè),網(wǎng)站定制,平南網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,平南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

{ if(root==null)return null;

visit(root);pre(root.left);pre(root.right);

}

中in(root)

{ if(root==null)return null;

in(root.left);visit(root);in(root.right);

}

后post(root)

{ if(root==null)return null;

post(root.left);post(root.right);visit(root);

}

Java幾種簡(jiǎn)單的排序源代碼

給你介紹4種排序方法及源碼,供參考

1.冒泡排序

主要思路: 從前往后依次交換兩個(gè)相鄰的元素,大的交換到后面,這樣每次大的數(shù)據(jù)就到后面,每一次遍歷,最大的數(shù)據(jù)到達(dá)最后面,時(shí)間復(fù)雜度是O(n^2)。

public?static?void?bubbleSort(int[]?arr){

for(int?i?=0;?i??arr.length?-?1;?i++){

for(int?j=0;?j??arr.length-1;?j++){

if(arr[j]??arr[j+1]){

arr[j]?=?arr[j]^arr[j+1];

arr[j+1]?=?arr[j]^arr[j+1];

arr[j]?=?arr[j]^arr[j+1];

}

}

}

}

2.選擇排序

主要思路:每次遍歷序列,從中選取最小的元素放到最前面,n次選擇后,前面就都是最小元素的排列了,時(shí)間復(fù)雜度是O(n^2)。

public?static?void?selectSort(int[]?arr){

for(int?i?=?0;?i?arr.length?-1;?i++){

for(int?j?=?i+1;?j??arr.length;?j++){

if(arr[j]??arr[i]){

arr[j]?=?arr[j]^arr[i];

arr[i]?=?arr[j]^arr[i];

arr[j]?=?arr[j]^arr[i];

}

}

}

}

3.插入排序

主要思路:使用了兩層嵌套循環(huán),逐個(gè)處理待排序的記錄。每個(gè)記錄與前面已經(jīng)排好序的記錄序列進(jìn)行比較,并將其插入到合適的位置,時(shí)間復(fù)雜度是O(n^2)。

public?static?void?insertionSort(int[]?arr){

int?j;

for(int?p?=?1;?p??arr.length;?p++){

int?temp?=?arr[p];???//保存要插入的數(shù)據(jù)

//將無(wú)序中的數(shù)和前面有序的數(shù)據(jù)相比,將比它大的數(shù),向后移動(dòng)

for(j=p;?j0??temp?arr[j-1];?j--){

arr[j]?=?arr[j-1];

}

//正確的位置設(shè)置成保存的數(shù)據(jù)

arr[j]?=?temp;

}

}

4.希爾排序

主要思路:用步長(zhǎng)分組,每個(gè)分組進(jìn)行插入排序,再慢慢減小步長(zhǎng),當(dāng)步長(zhǎng)為1的時(shí)候完成一次插入排序,? 希爾排序的時(shí)間復(fù)雜度是:O(nlogn)~O(n2),平均時(shí)間復(fù)雜度大致是O(n^1.5)

public?static?void?shellSort(int[]?arr){

int?j?;

for(int?gap?=?arr.length/2;?gap??0?;?gap/=2){

for(int?i?=?gap;?i??arr.length;?i++){

int?temp?=?arr[i];

for(j?=?i;?j=gap??temparr[j-gap];?j-=gap){

arr[j]?=?arr[j-gap];

}

arr[j]?=?temp;

}

}

}

java Map 怎么遍歷

java Map 遍歷一般有四種方式

方式一: 這是最常見(jiàn)的并且在大多數(shù)情況下也是最可取的遍歷方式。在鍵值都需要時(shí)使用。

方式二: 在for-each循環(huán)中遍歷keys或values。

如果只需要map中的鍵或者值,你可以通過(guò)keySet或values來(lái)實(shí)現(xiàn)遍歷,而不是用entrySet。

該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。

方式三:使用Iterator遍歷

使用泛型:

不使用泛型:

你也可以在keySet和values上應(yīng)用同樣的方法。

方法四:? 通過(guò)鍵找值遍歷(效率低)

作為方法一的替代,這個(gè)代碼看上去更加干凈;但實(shí)際上它相當(dāng)慢且無(wú)效率。

因?yàn)閺逆I取值是耗時(shí)的操作(與方法一相比,在不同的Map實(shí)現(xiàn)中該方法慢了20%~200%)。如果安裝了FindBugs,它會(huì)做出檢查并警告你關(guān)于哪些是低效率的遍歷。所以盡量避免使用。

總結(jié):

如果僅需要鍵(keys)或值(values)使用方法二。

如果所使用的語(yǔ)言版本低于java 5,或是打算在遍歷時(shí)刪除entries,必須使用方法三。

否則使用方法一(鍵值都要)。

擴(kuò)展資料:

類(lèi)似的遍歷算法:

二叉樹(shù)的遍歷算法

1、先(根)序遍歷的遞歸算法定義:

若二叉樹(shù)非空,則依次執(zhí)行如下操作:

⑴ 訪(fǎng)問(wèn)根結(jié)點(diǎn);

⑵ 遍歷左子樹(shù);

⑶ 遍歷右子樹(shù)。

2、中(根)序遍歷的遞歸算法定義:

若二叉樹(shù)非空,則依次執(zhí)行如下操作:

⑴遍歷左子樹(shù);

⑵訪(fǎng)問(wèn)根結(jié)點(diǎn);

⑶遍歷右子樹(shù)。

3、后(根)序遍歷得遞歸算法定義:

若二叉樹(shù)非空,則依次執(zhí)行如下操作:

⑴遍歷左子樹(shù);

⑵遍歷右子樹(shù);

⑶訪(fǎng)問(wèn)根結(jié)點(diǎn)。

參考資料:百度百科——Java

java中輸入100個(gè)數(shù)據(jù)再排序后輸出的代碼

既然在學(xué)數(shù)據(jù)結(jié)構(gòu),那就用二叉樹(shù)排序吧,一個(gè)根節(jié)點(diǎn),比根節(jié)點(diǎn)小的排左邊,比根節(jié)點(diǎn)大的排右邊,以此類(lèi)推,形成二叉樹(shù),再遍歷輸出即可。這個(gè)例子掌握了,你就多學(xué)了一種數(shù)據(jù)結(jié)構(gòu)

class BinaryTree

{

class Node

{

private int data; //保存數(shù)據(jù)內(nèi)容

private Node left; //左子樹(shù)

private Node right;//右子樹(shù)

public Node(int data){

this.data = data;

}

public void addNode(Node newNode){ //addNode方法用來(lái)添加數(shù)據(jù)

if(newNode.data = this.data){

if(this.left == null){ //左子樹(shù)為空

this.left = newNode;

}else{

this.left.addNode(newNode);//繼續(xù)向下判斷

}

}

if(newNode.data this.data){

if(this.right == null){ //右子樹(shù)為空

this.right = newNode;

}else{

this.right.addNode(newNode);//繼續(xù)向下判斷

}

}

} //addNode方法結(jié)束

public void printNode(){ //采用中序遍歷(左-根-右)

if(this.left != null){

this.left.printNode();

}

System.out.println(this.data); //找到根內(nèi)容

if(this.right != null){

this.right.printNode();

}

}

} //Node類(lèi)結(jié)束

private Node root; //根節(jié)點(diǎn)

public void add(int data){

Node newNode = new Node(data);

if(this.root == null){

this.root = newNode;

}else{

this.root.addNode(newNode);

}

}

public void print(){

this.root.printNode();

}

}

public class Demo

{

public static void main(String args[]){

BinaryTree bt = new BinaryTree();

bt.add(3);

bt.add(4);

bt.add(0);

bt.add(1);//可添加100個(gè)數(shù)據(jù),也可通過(guò)args[]手動(dòng)輸入,需略做調(diào)整

bt.print();

}

}


名稱(chēng)欄目:java中序遍歷代碼 中序遍歷怎么數(shù)
文章源于:http://weahome.cn/article/docjhco.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部