js 10 大排序演算法

2021-09-27 01:48:14 字數 2307 閱讀 5222

演算法思想

js實現

const  swap = function(arr, i, j) 

const merge = function(left, right)

else

}while (left.length)

result.push(left.shift());

while (right.length)

result.push(right.shift());

return result;

}const partition = function(arr, left ,right)

}swap(arr, pivot, index - 1);

return index-1;

}// buildmaxheap

const buildmaxheap =function(arr)

}const heapify = function(arr, i)

if (right < len && arr[right] > arr[largest])

if (largest != i)

}let counter =;

//end

//part2

export default

counter[bucket].push(arr[j]);

}var pos = 0;

for(var j = 0; j < counter.length; j++) }}

} return arr;

}, //桶排序 bucketsize 初始化數量 = 5

bucketsort(arr, bucketsize =5)

let = arr[0];

for (let i = 1; i < arr.length; i++) else if (arr[i] > maxvalue)

} var bucketcount = math.floor((maxvalue - minvalue) / bucketsize) + 1;

var buckets = new array(bucketcount);

for (i = 0; i < buckets.length; i++)

//利用對映函式將資料分配到各個桶中

for (i = 0; i < arr.length; i++)

arr.length = 0; // 清空 arr

for (i = 0; i < buckets.length; i++)

} return arr;

}, //計數排序

countingsort(arr, maxvalue)

bucket[arr[i]]++;

} for (var j = 0; j < bucketlen; j++)

} return arr;

}, //氣泡排序

bubblesort(arr)

}} return arr;

}, selectionsort(arr)

}temp = arr[i];

arr[i] = arr[minindex];

arr[minindex] = temp;

} return arr;

}, insertionsort(arr)

arr[preindex+1] = current;

} return arr;

}, shellsort(arr)

for (gap; gap> 0; gap = math.floor(gap/3))

arr[j+gap] = temp;

}} return arr;

}, mergesort(arr)

var middle = math.floor(len / 2),

left = arr.slice(0, middle),

right = arr.slice(middle);

return merge(mergesort(left), mergesort(right));

}, quicksort(arr, left, right)

return arr;

}, heapsort(arr)

return arr; }

//end

}

背景:命名風波

參考鏈結

10大排序演算法總結

1 2 3 3.1 氣泡排序 把第乙個元素與第二個元素比較,如果第乙個比第二個大,則交換他們的位置 接著繼續比較第二個與第三個元素,如果第二個比第三個大,則交換他們的位置 對每一對相鄰元素作同樣的工作,這樣一趟比較交換下來之後,排在最右的元素就會是最大的數 除去已經選出的,最右邊的元素,對剩餘的元素...

js實現常用的10大排序演算法

排序演算法是面試時面試官經常提的問題,最初的時候我只是死記硬背,現在花時間理解透每乙個演算法背後的真諦,做到理解熟記於心 交換排序 氣泡排序與快速排序 插入排序 直接插入排序與折半插入排序以及希爾排序 選擇排序 簡單選擇排序與堆排序 歸併排序 基數排序 1.氣泡排序 氣泡排序的演算法思想是就是不停地...

js十大排序演算法 氣泡排序

1 對於評述演算法優劣術語的說明 穩定 如果a原本在b前面,而a b,排序之後a仍然在b的前面 不穩定 如果a原本在b的前面,而a b,排序之後a可能會出現在b的後面 內排序 所有排序操作都在記憶體中完成 外排序 由於資料太大,因此把資料放在磁碟中,而排序通過磁碟和記憶體的資料傳輸才能進行 時間複雜...