Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
23
Task/Quickselect-algorithm/Zkl/quickselect-algorithm-1.zkl
Normal file
23
Task/Quickselect-algorithm/Zkl/quickselect-algorithm-1.zkl
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
fcn qselect(list,nth){ // in place quick select
|
||||
fcn(list,left,right,nth){
|
||||
if (left==right) return(list[left]);
|
||||
pivotIndex:=(left+right)/2; // or median of first,middle,last
|
||||
|
||||
// partition
|
||||
pivot:=list[pivotIndex];
|
||||
list.swap(pivotIndex,right); // move pivot to end
|
||||
pivotIndex := left;
|
||||
i:=left; do(right-left){ // foreach i in ([left..right-1])
|
||||
if (list[i] < pivot){
|
||||
list.swap(i,pivotIndex);
|
||||
pivotIndex += 1;
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
list.swap(pivotIndex,right); // move pivot to final place
|
||||
|
||||
if (nth==pivotIndex) return(list[nth]);
|
||||
if (nth<pivotIndex) return(self.fcn(list,left,pivotIndex-1,nth));
|
||||
return(self.fcn(list,pivotIndex+1,right,nth));
|
||||
}(list.copy(),0,list.len()-1,nth);
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
list:=T(10, 9, 8, 7, 6, 1, 2, 3, 4, 5);
|
||||
foreach nth in (list.len()){ println(nth,": ",qselect(list,nth)) }
|
||||
Loading…
Add table
Add a link
Reference in a new issue