let selectSort = function (arr:number[]):number[]{ let resultArr:number[] = []; let recursion = function (){ if(arr.length===0){ return; } let minValue:number = Math.min(...arr); console.log(minValue); let index = arr.indexOf(minValue); minValue = arr.splice(index,1)[0]; resultArr.push(minValue); recursion(); } recursion(); return resultArr; }
let result = selectSort([4,5,6,7,2,9,7,9,7,56,45,4,34,3,3,1]);
快速排序
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。