Nov-18-2019, 09:26 PM
Your code is faulty and won´t run correctly.
I refactored it a little bit.
I refactored it a little bit.
# This is unpythonic code, don´t code like this # from numpy import * # NEVER DO IMPORT * # N = 4 # M = zeros(N) # M[0]=2;M[1]=1;M[2]=11;M[3]=7 import numpy as np M = np.array([2, 1, 11, 7]) print(M) N = len(M) # for i in range (0, N, 1): # no need to run till N, N-1 just works # largest = M(i) # this will throw error, you mean M[i] # index_largest = i # for j in range (i+1, N, 1): # if M[j] > largest: # largest = M[j] # index_largest = j # hold_number = M[i] # three lines to swap two values and indentation is wrong # M[i] = M[index_largest] # M[index_largest] = hold_number # print (M) for i in range(N-1): # no need to explicitly give start value zero and step value 1 largest = M[i] index_largest = i for j in range(i+1, N): if M[j] > largest: largest = M[j] index_largest = j # swapping of values must be done if condition is True M[i], M[index_largest] = M[index_largest], M[i] # one line to swap two values print(M)
Output:[ 2 1 11 7]
[11 1 2 7]
[11 7 1 2]
[11 7 2 1]
I would prefer it this way:for i in range(N-1): smallest = M[i] index_smallest = i for j in range(i+1, N): if M[j] < smallest: smallest = M[j] index_smallest = j M[i], M[index_smallest] = M[index_smallest], M[i] print(M)
Output:[ 2 1 11 7]
[ 1 2 11 7]
[ 1 2 11 7]
[ 1 2 7 11]