Finding 3rd Lowest Value Without Sort

时间:2016-04-21 22:14:36

标签: python sorting

So I'm tasked with finding the third lowest value of a given list. My code looks like

def findMinIndex(L, startIndex):
    minIndex = startIndex
    currIndex = minIndex + 1
    while currIndex < len(L):
        if L[currIndex] < L[minIndex]:
            minIndex = currIndex
            currIndex = currIndex + 1
    return minIndex

def thirdSmallest(L):
    i = 0
    while i < len(L): 
        minIndex = findMinIndex(L, i)
        L[i], L[minIndex] = L[minIndex], L[i]
        i = i + 1
    print(L[2])


thirdSmallest([1, 99, 7, -3, 3, 10, 12])

The list I have for L should print 3 as the 3rd lowest value, but anaconda is taking an incredibly long time to return anything to me. I was given a hint that I should modify

while i < len(L):

or my print function. But I dont see what I should do. Any advice?

2 个答案:

答案 0 :(得分:1)

I don't understand what you want to do, but I've find one error, leading to potential infinite loop:

def findMinIndex(L, startIndex):
    minIndex = startIndex
    currIndex = minIndex + 1
    while currIndex < len(L):
        if L[currIndex] < L[minIndex]:
            minIndex = currIndex
        currIndex = currIndex + 1  # Error corrected here
    return minIndex

答案 1 :(得分:0)

This loop will run forever if the if condition is false

while currIndex < len(L):
    if L[currIndex] < L[minIndex]:
        minIndex = currIndex
        currIndex = currIndex + 1