<script>
var findK = function(arr,k) {
if (arr.length <k) {
console.log("数组长度小于k");
return
}
var pivotIndex = 0;
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
if(left.length>k){
return findK(left,k);
}
if(left.length<(k-1)){
return findK(right,k-left.length-1)
}
if(left.length===(k-1))
return pivot;
};
const arr = [98, 42, 25, 54, 15, 3, 25, 72, 41, 10, 121];
console.log(arr);
console.log(findK(arr,8)); //输出:[ 3, 10, 15, 25, 25, 41, 42, 54, 72, 98, 121 ]
</script>
寻找第k小/&js实现&快排思路
最新推荐文章于 2024-10-17 11:39:06 发布