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...