排序方法,合併排序 快速排序

2021-08-15 17:58:43 字數 1035 閱讀 8550

function mergesort(myarray)

var middle = math.floor(myarray.length / 2),

left = myarray.slice(0, middle),

right = myarray.slice(middle),

params = merge(mergesort(left), mergesort(right));

// 在返回的陣列頭部,新增兩個元素,第乙個是0,第二個是返回的陣列長度

params.unshift(0, myarray.length);

// splice用來替換陣列元素,它接受多個引數,

// 第乙個是開始替換的位置,第二個是需要替換的個數,後面就是所有新加入的元素。

// 這一句的意思就是原來的myarray陣列替換成排序後的myarray

// 返回排序後的陣列

return myarray;

}function merge(left, right) else

}return result.concat(left.slice(il)).concat(right.slice(ir));

}var arr = [12, 33, 54, 35, 4, 6, 98, 9, 5, 7, 3, 6, 14, 6, 145, 1, 235];

console.log("mergesort",mergesort(arr));

function swap(myarray, firstindex, secondindex)

function partition(myarray, left, right)

while (myarray[j] > pivot)

if (i <= j)

}return i;

}function quicksort(myarray, left, right)

if (index < right)

return myarray;

}console.log(quicksort(arr));

經典排序 快速排序 合併排序 堆排序

一 快速排序 思想 用樞紐元素pivot將待排陣列分成兩個子表,左表中元素全都小於右表元素,遞迴執行 int partition int a,int low,int high for int i low,j mid 1,k i i mid j high k else while j high a k...

排序 合併排序

與很多有用的演算法類似,合併排序基於這樣乙個技巧 將 2 個大小為 n 2 的已排序序列合併為乙個 n 元素已排序序列僅需要 n 次操作。這個方法叫做合併。我們用個簡單的例子來看看這是什麼意思 通過此圖你可以看到,在 2 個 4元素序列裡你只需要迭代一次,就能構建最終的8元素已排序序列,因為兩個4元...

常用排序演算法 合併排序和快速排序

分治 divide and conquer 是一場常見的演算法策略。分治策略的基本思想就是對於乙個問題規模為n的問題,將其劃分為規模足夠小的k個子問題,子問題由於規模足夠小可以直接求解,最後將規模足夠小的k的問題的解合併得出原問題的解。分治策略的問題的求解過程的一般套路就是 判斷問題規模,足夠小進入...