演算法第一部分(1)

2021-09-24 03:59:40 字數 3416 閱讀 8635

1.學習演算法,最好先了解陣列,鍊錶,堆,棧等線性結構

2.對遞迴,遍歷,演算法複雜度有著常識性理解

3.主要包括三方面的知識:線性(主要是排序) — 樹形結構 — 圖形結構

定義:選擇排序每次都從剩下的n - i 個元素找到最小的數,並與i位置的數交換位置。

public

void

selectionsort

(t arr,

int n)

}swap

(arr,i,minindex);}

}

選擇排序法的複雜度是o(n*n) 需要對n個數進行排序,每個數的排序需要遍歷(n … 1)次

定義:插入排序法迴圈n次,每次將第i + 1個數與i及其前面的數進行對比。如果i+ 1 < i 則需要進行交換。

//插入排序

public

void

insertsort

(t arr,

int n)

arr[j]

= e;

}}

定義:歸併排序將乙個陣列進行遞迴二分,直到無法再細分下去後,排序並向上合併

public

void

mergesort

(t arr,

int n)

//遞迴使用歸併排序,對arr【l。。。r】的範圍進行排序

private

void

mergesort

(t arr,

int l,

int r)

//當前區間的中間值。

int mid = l+

(r - l )/2

;//(l + r) / 2可能發生溢位

//先將mergesort歸併到 0 0

mergesort

(arr,l,mid)

;//再將其歸併到 0 1

mergesort

(arr,mid +

1,r)

;//歸併已經排序好的兩部分函式,只要這樣就不需要排序

if(arr[mid]

.compareto

(arr[mid +1]

)>0)

}//將arr[l...mid]和arr[mid+1...r]兩部分進行歸併

private

void

mergesort

(t arr,

int l,

int mid,

int r)

//指定兩個陣列的開頭

int i = l,j = mid +1;

for(

int k = l ; k <= r ; k ++

)else

if(j > r)

else

if(aux[i - l]

.compareto

(aux[j - l]

)<0)

else

}}

歸併排序同時也可以採用自底向上的方法

public

void

mergesorttwo

(t arr,

int n)

}}

定義:快速排序即隨機找出乙個點v,並把其他的點區分為小於v與大於v,即把乙個陣列分為三部分,遞迴排序出該陣列

注意,當陣列中包含大量重複鍵值,兩邊陣列依然有可能極不平衡,可以採用把重複值v隨機分到兩邊來解決這個問題

public

void

quicksort2

(t arr,

int n)

private

void

quicksort2

(t arr,

int l,

int r)

int p =

partition2

(arr,l,r)

;quicksort2

(arr,l,p -1)

;quicksort2

(arr,p+

1,r);}

private

intpartition2

(t arr,

int l,

int r)

//j 會停在第乙個arr[j] < v上,j從後往前遍歷

while

(j >= l+

1&& arr[j]

.compareto

(v)>0)

//判斷迴圈是不是結束了

if(i > j)

swap

(arr,i,j)

; i++

; j--;}

swap

(arr,l,j)

;return j;

}

同時還有三路快速排序,分為大於v 等於v 小於v 三個部分

;//隨機乙個數與第乙個數交換,防止近乎有序的陣列

swap

(arr,l,random.

nextint

(r -l +1)

+ l)

; t v = arr[l]

;int lt = l;

//arr[l + 1 ... lt] int gt =r +1;

//arr[gt .. r] >v

int i = l +1;

//arr[lt+1...i] == v

while

(i < gt)

else

if(arr[i]

.compareto

(v)>0)

else

}swap

(arr,l,lt)

;quicksort3

(arr,l,lt -1)

;quicksort3

(arr,gt,r)

;}

Axure RP 第一部分

axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...

演算法導論第一部分筆記

一 偽 規範總結 1 縮排表示塊的結構 實際上這個我們可以聯想python來理解 2 while 後面跟上end比較好,for to downto 後面則不需要 3 大部分都類似於c的 4 部分操作可以由英文來代替 5 一般不使用全域性變數,復合資料往往組織為物件來進行操作 二 演算法複雜度 跳過 ...

第一部分 初識Solr

第一章 solr簡介 這章主要包括內容 這本書講述nosql技術,apache solr 像它的非關係模式兄弟一樣,針對於某些問題進行了優化。特別的,solr在處理企業級大量資料 及時搜尋 文字資料 返回相關性結果等方面進行了很大優化。這裡說的只是冰山一角,讓我們從下面幾方面來進行詳細敘說 solr...