Unexpected Result

Question:

I am writing a program to sort array using this Minimum function but getting unexpected result

 def Minimum(Arr,starting,ending):
    small = 0
    for i in range(starting,ending-1):
      #if i+1 != ending:
        if Arr[small] > Arr[i+1]:
           small = i + 1
    return small
x=[-5,-3,-4,0,2,3,1,324,321]
def Sort4(Arr):
    for i in range(len(Arr)-1):
        temp = Arr[i]
        value = Minimum(Arr, i, len(Arr))
        Arr[i] = Arr[value]
        Arr[value] = temp
            
Sort4(x)
print(x)

Result:[324, -5, -3, -4, 0, 1, 2, 3, 321] but i want my results [-5,-4,-3,0,1,2,3,321,324] i don,t know why i am getting wrong result

Asked By: Risen_Star

||

Answers:

Your minimum function doesn’t function properly. You need to check for the minimum within the (starting, ending) subarray:

def Minimum(Arr, starting, ending):
    small = starting  # assume first element is the smallest
    for i in range(starting, ending): # go through each index in range
        if Arr[small] > Arr[i]:  # compare with current smallest
            small = i   # update smallest if required
    return small

Which makes the sort work properly:

x = [-5, -3, -4, 0, 2, 3, 1, 324, 321]


def Sort4(Arr):
    for i in range(len(Arr) - 1):
        temp = Arr[i]
        value = Minimum(Arr, i, len(Arr))
        Arr[i] = Arr[value]
        Arr[value] = temp


Sort4(x)
print(x)

Result:

[-5, -4, -3, 0, 1, 2, 3, 321, 324]
Answered By: rdas
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.