演算法學習5

2021-10-09 08:26:55 字數 1440 閱讀 5086

乙個最大堆

package com.example.demo.algorithm;

/** * @author aloli

* @date 2020/9/10 13:35

* 乙個最大堆

*/public

class

maxheap

public

maxheap

(int size)

if(size>maxsize)

this

.size =0;

this

.elementdata =

newint

[size+1]

;this

.elementdata[0]

= defaultdata;

}public

maxheap

(int

arr)

}/**

* 將資料放在最後,同時調整堆

* @param data

*/public

void

put(

int data)

this

.elementdata[

++size]

= data;

revisionbottomtotop

(size);}

/** * 彈出根結點,將最後乙個元素作為根結點,同時調整堆

* @return

*/public

intpop()

int ret = elementdata[1]

; elementdata[1]

= elementdata[size--];

revisiontoptobottom

(elementdata[1]

);return ret;

}public

boolean

isempty()

/** *從最後乙個結點調整堆

* @param currentindex

*/private

void

revisionbottomtotop

(int currentindex)

}/**

* 從根結點調整堆

*/private

void

revisiontoptobottom

(int currentdata)

if(currentdata >= elementdata[child]

)else

} elementdata[parent]

= currentdata;

}private

void

swap

(int var1,

int var2)

}

演算法學習 5

快速排序也是一種採用分治策略的演算法,它與歸併排序不同的是,它是原址排序,不需要額外的空間。如果把要排序的陣列簡單從任何位置切成兩個子陣列,對子陣列排序後,又因為是原址排序,排序後的兩個子陣列分別都是有序的,但是作為乙個整體很顯然未必就是是有序的呢 所以分解肯定就不能是簡單的把陣列切斷成兩個子陣列。...

排序演算法學習(5)

1.將2個各有n個元素的有序表歸併成乙個有序表,其最少的比較次數是 n 分析 歸併排序最少比較n,最多比較2n 1.當第乙個有序表中所有的元素都小於 或大於 第二個表中的元素,只需要用第二個表中的第乙個元素依次與第乙個表的元素比較,總計比較n次。分析二 a a0,a1,an b b0,b1,bn 為...

演算法學習Task5

k means演算法 聚類與分類的區別,分類的目標事先已知,而聚類是一種無監督學習,目標未知 具體方法有距離 密度 層次 網格 圖論 k means演算法基於距離 1 確定簇的個數k,可以通過經驗以及交叉檢驗可以 2 初始選取k個中心點,採用k means 加速收斂,即選擇樣本點中任意乙個作為第乙個...