8 演算法初級

2021-08-27 20:52:30 字數 2473 閱讀 7811

視覺化排序

十大經典排序演算法

以下是高德納在他的著作《計算機程式設計藝術》裡對演算法的特徵歸納:

體育委員兩兩摸頭法(氣泡排序)

體育老師一指禪法(選擇排序)

起撲克牌法(插入排序)

強迫症收撲克牌法(基數排序)

快速排序

歸併排序

堆排序原理:

n多數字,第1個數字跟第二個比較,if  第1個數字大(或者小),跟第2個交換位置。交換位置後,第2個和第3跟比較,比較後,交換位置,第一輪結束後,最大(最小)的數字會到最後一位。

下一輪,忽略已經排好的數字,繼續...

直到所有的數字都排列完成

**實現:

function arr_sort(arr) 

}} }

var arr = [665, 432, 21, 534645, 5345341, 5, 8, 3, 2, ];

arr_sort(arr);

console.log(arr)

原理:

n多個數字

1.從其中找出最小的,和第一位交換位置,

2.從第二位開始找出最小的,和第二位交換位置,第一位已經是最小的了。

**實現:

function arr_sort(arr) 

}//[arr[i], arr[min]] = [arr[min], arr[i]] //把每輪的第乙個和當前輪的最小值交換位置

var mins = arr[min];

arr[min] = arr[i];

arr[i] = mins;

} }var arr = [665, 432, 21, 534645, 5345341, 5, 8, 3, 2];

arr_sort(arr)

console.log(arr)

原理:

n多數字

1.第乙個數字認為是排序好的,選擇第二位的數字,把第二位的數字放到已經排序號的第一位的合適位置(合適位置解釋:跟第一位比較,大或是小)。

2.第一二位已經排序好了,看第三位的數字,繼續放到已經排序好的第一二為的合適位置...

**:

function arr_sort(arr) 

}} }

var arr = [665, 432, 21, 534645, 5345341, 5, 8, 3, 2];

arr_sort(arr)

console.log(arr)

原理:

n多數字

1.從n多數字中選出乙個數字。(基準數字)

2.從新排序,跟基準數字比較,大的小的,分開存放。

3.遞迴的把大的小的排序。

4.遞迴到最底部時,數列的大小是零或一,也就是已經排序好了。

**:

function quicksort(arr) 

let leftarr =

let rightarr =

for(let i = 1; i < arr.length; i++) else

} return quicksort(leftarr).concat(arr[0]).concat(quicksort(rightarr))

}var arr = [10, 34, 21, 47, 3, 28]

quicksort(arr)

console.log(arr)

原理:

在進行插入排序之前

把n多數字分成n組

組內進行插入排序

依次縮減組數再進行排序

待組數足夠小

再對所有數字進行一次插入排序

**:

function shellsort(arr) 

arr[j + gap] = temp

}console.log(arr)

}}var arr = [3, 1, 7, 2, 5, 0, 4, 6]

shellsort(arr)

console.log(arr)

原理:

申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列

設定兩個指標,最初位置分別為兩個已經排序序列的起始位置

比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置

重複步驟3直到某一指標到達序列尾

將另一串行剩下的所有元素直接複製到合併序列尾

**

function mergesort(arr) 

return result.concat(left.concat(right))

} if(arr.length < 2) return arr

var mid = arr.length >> 1

return merge(mergesort(this.slice(0, mid)), mergesort(this.slice(mid)))

}

win8初級知識

1 win8 metro下的messagebox private async void no but click object sender,routedeventargs e private void commandinvokedhandler iuicommand command this,nu...

ACM初級演算法

acm 的演算法 覺得很好,有層次感 oj上的一些水題 可用來練手和增加自信 poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094 size 5 b 初期 b size 一.基本演算法 1 列舉.poj1753...

初級排序演算法

回顧之前學習的各種排序演算法,從初級到高階,包括選擇排序,氣泡排序,插入排序,希爾排序,快速排序,歸併排序,堆排序等等,持續更新中 注 這裡實現的演算法都是遞增排序,也就是從小到大排序。思想 首先,找到陣列中最小的那個元素,其次,將它和陣列的第乙個元素交換位置 如果第乙個元素就是最小元素那麼它就和自...