演算法學習之排序 LRU演算法

2021-10-24 01:53:20 字數 3002 閱讀 3381

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