Skip to content

Instantly share code, notes, and snippets.

@tommy351
Created February 15, 2013 17:31
Show Gist options
  • Save tommy351/4961934 to your computer and use it in GitHub Desktop.
Save tommy351/4961934 to your computer and use it in GitHub Desktop.
Quick sort
var sort = function(arr, left, right){
if (right <= left) return;
// 取中間值作為 pivot
var pivotIndex = parseInt((left + right) / 2),
pivot = arr[pivotIndex];
// pivot 移至最右方
swap(arr, pivotIndex, right);
// 最左方元素設定為索引
var swapIndex = left;
// 小於基準的元素搬至索引左方
for (var i = left; i < right; i++){
if (arr[i] <= pivot){
swap(arr, i, swapIndex++);
}
}
// 索引與 pivot 交換位置
swap(arr, swapIndex, right);
sort(arr, left, swapIndex - 1);
sort(arr, swapIndex + 1, right);
return arr;
};
var swap = function(arr, a, b){
var tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment