視覺化排序
十大經典排序演算法
以下是高德納在他的著作《計算機程式設計藝術》裡對演算法的特徵歸納:
體育委員兩兩摸頭法(氣泡排序)
體育老師一指禪法(選擇排序)
起撲克牌法(插入排序)
強迫症收撲克牌法(基數排序)
快速排序
歸併排序
堆排序原理:
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...
初級排序演算法
回顧之前學習的各種排序演算法,從初級到高階,包括選擇排序,氣泡排序,插入排序,希爾排序,快速排序,歸併排序,堆排序等等,持續更新中 注 這裡實現的演算法都是遞增排序,也就是從小到大排序。思想 首先,找到陣列中最小的那個元素,其次,將它和陣列的第乙個元素交換位置 如果第乙個元素就是最小元素那麼它就和自...