1)氣泡排序
public
void
bubblesort
(int
arr)}}
}
2)選擇排序
public
void
selectionsort
(int
arr)
}//然後將最小值與本次迴圈的,開始值交換
int temp = arr[i]
; arr[i]
= min;
arr[index]
= temp;
}}
說明:如果每次比較都交換,那麼就是交換排序;如果每次比較完乙個迴圈再交換,就是簡單選擇排序。
3)插入排序
public
static
void
insertsort
(int
a)a[j+1]
=insertnum;
//找到位置,插入當前元素
}}
4)希爾排序
public
void
sheelsort
(int
a)else}}
//j,k為插入排序,不過步長為i
}}
5)歸併排序
import org.junit.test;
public
class
mergesort
//如果第乙個序列未檢測完,直接將後面所有元素加到合併的序列中
while
(p1<=mid) tmp[k++
]=a[p1++];
while
(p2<=right) tmp[k++
]=a[p2++];
//同上
//複製回原素組
for(
int i = left; i <=right; i++
) a[i]
=tmp[i];}
public
void
mergesort
(int
a,int start,
int end)
}@test
public
void
test()
;mergesort
(a,0
, a.length-1)
; system.out.
println
("排好序的陣列:");
for(
int e : a)
system.out.
print
(e+" ");
}}
6)快速排序
參考
public
class
quicksort
i=low;
j=high;
//temp就是基準位
temp = arr[low]
;while
(i//再看左邊,依次往右遞增
while
(temp>=arr[i]
&&i//如果滿足條件則交換
if(i}//最後將基準為與i和j相等位置的數字交換
arr[low]
= arr[i]
; arr[i]
= temp;
//遞迴呼叫左半數組
quicksort
(arr, low, j-1)
;//遞迴呼叫右半陣列
quicksort
(arr, j+
1, high);}
public
static
void
main
(string[
] args)
;quicksort
(arr,
0, arr.length-1)
;for
(int i =
0; i < arr.length; i++)}
}
7)基數排序
參考
lru 快取淘汰演算法就是一種常用策略。lru 的全稱是 least recently used,也就是說我們認為最近使用過的資料應該是是「有用的」,很久都沒用過的資料應該是無用的,記憶體滿了就優先刪那些很久沒用過的資料。146. lru快取機制
題解:
繼承linkedhashmap實現
要滿足get()
和put()
都在o(1)
的時間內完成,就必須要滿足以下條件:
class
lrucache
public
intget
(int key)
// 將 key 變為最近使用
makerecently
(key)
;return cache.
get(key);}
public
void
put(
int key,
int val)
if(cache.
size()
>=
this
.cap)
// 將新的 key 新增鍊錶尾部
cache.
put(key, val);}
private
void
makerecently
(int key)
}
演算法學習 排序演算法
排序演算法 平均時間複雜度 最好情況 最壞情況 空間複雜度 穩定性氣泡排序 o n 2 o n o n 2 o 1 穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定插入排序 o n 2 o n o n 2 o 1 穩定希爾排序 o nlogn o nlogn o nlogn o 1 ...
排序演算法學習之堆排序
堆排序 英語 heapsort 是指利用 堆這種資料結構所設計的一種 排序演算法 堆是乙個近似 完全二叉樹 的結構,並同時滿足堆積的性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點。簡單的就是將乙個陣列看作是乙個二叉樹,然後每個父節點跟自己的子節點比較 最大的就成為父節點。如下圖 當第一輪對...
演算法學習之氣泡排序
基本思想 陣列 6,5,7,3,8,2 按從公升序排列。依次比較相鄰的兩個數,前乙個數比後乙個數大則交換位置,得到最大的數在最後。第一輪比較完後的結果為 5,6,3,7,2,8 第二輪比較得出倒數第二的數字 5,3,6,2,7,8 依次類推 package com.example.demo.othe...