Skip to content

Commit 5dad709

Browse files
Merge pull request #594 from badmojo76/kth_largest_element
Kth largest element
2 parents 2589d8d + 44bf566 commit 5dad709

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Python/kth_element.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/python3
2+
3+
# Usage: kth_element(place_of_element,largest_or_smallest,array)
4+
# If you are looking for the 3rd largest element of "myarray": kth_element(3,'largest',myarray)
5+
6+
def kth_element(k,large_or_small,mylist):
7+
8+
if large_or_small == "largest":
9+
modifier = 1
10+
elif large_or_small == "smallest":
11+
modifier = -1
12+
else:
13+
print("Valid values for the sort are 'largest' or 'smallest'")
14+
exit(1)
15+
16+
if len(mylist) < k or k < 1:
17+
print("ERROR: Array size is " + str(len(mylist)) + ", but requested value is " + str(k) + "...")
18+
return None
19+
20+
newlist = [None] * k
21+
22+
while len(mylist) > 0:
23+
test = mylist.pop()
24+
for i in range(0,k):
25+
if newlist[i] == None or test * modifier > newlist[i] * modifier:
26+
newlist.insert(i,test)
27+
newlist.pop()
28+
#print(newlist) # Uncomment to see the value list build in action
29+
break
30+
31+
return(newlist[k-1])
32+
33+
if __name__ == "__main__":
34+
mylist = [ 42, 39, 857, 20, 3884, 82, 0, 84, 8, 3, -50, -1000 ]
35+
print(kth_element(1,'smallest',mylist))

0 commit comments

Comments
 (0)