演算法思想
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的後面 內排序 所有排序操作都在記憶體中完成 外排序 由於資料太大,因此把資料放在磁碟中,而排序通過磁碟和記憶體的資料傳輸才能進行 時間複雜...