Wednesday, October 27, 2021

Find the maximum and minimum in an array

Using numpy

 import numpy

arr = numpy.array([1,2,5,7,2,6,8])
max_element= numpy.max(arr)
min_element = numpy.min(arr)

print(max_element)
print(min_element)

Using Comparisons
class pair:
    def __init__(self):
        self.min = 0
        self.max = 0

def getMinMax(arr: list, n : int) -> pair:
    minmax = pair()



    if n == 1:
        minmax.max = arr[0]
        minmax.min = arr[0]
        return minmax


    if arr[0] > arr[1]:
        minmax.max = arr[0]
        minmax.min = arr[1]

    else:
        minmax.max = arr[1]
        minmax.min = arr[0]
   
    for i in range(2,n):
        if arr[i] > minmax.max:
            minmax.max = arr[i]
        elif arr[i] < minmax.min:
            minmax.min = arr[i]
   
    return minmax

if __name__ == "__main__":
    arr = [ 100,11,22,1,330,2000]
    arr_size = 6
    minmax = getMinMax(arr,arr_size)
    print(minmax.min)
    print(minmax.max)

Tournament method


def getMinMax(low,high,arr):
    arr_max = arr[low]
    arr_min = arr[low]


    if low == high:
        arr_max = arr[low]
        arr_min = arr[low]
        return(arr_max,arr_min)

    elif high == low + 1:
        if arr[low] > arr[high]:
            arr_max = arr[low]
            arr_min = arr[high]

        else:
            arr_max = arr[high]
            arr_min = arr[low]
        return(arr_max,arr_min)
    else:
        mid = int((low+high)/2)
        arr_max1, arr_min1 = getMinMax(low,mid,arr)
        arr_max2, arr_min2 = getMinMax(mid+1,high,arr)
   
    return(max(arr_max1,arr_max2), min(arr_min1,arr_min2))


arr = [ 100,11,22,1,330,2000]
high = len(arr) -1
low = 0
arr_max , arr_min = getMinMax(low,high,arr)
print(arr_min)
print(arr_max)


Using Compare in pairs
def getMinMax(arr):
    n = len(arr)

    if(n%2 == 0):
        mx = max(arr[0],arr[1])
        mn = min(arr[0],arr[1])

        i = 2

    else:
        mx = mn = arr[0]

        i =1

    while(i<n-1):
        if arr[i] < arr[i+1]:
            mx= max(mx,arr[i+1])
            mn = min(mn,arr[i])
        else:
            mx= max(mx,arr[i])
            mn = min(mn,arr[i+1])
       

        i+=2
    return(mx,mn)

if __name__ == "__main__":
    arr = [100,11,223,1,223,4444]
    mx,mn = getMinMax(arr)
    print(mx)
    print(mn)


Monday, October 25, 2021

Reverse an array

#Reverse an array
#Using the reversed() built in function
def Reversed(lst):
    return [ele for ele in reversed(lst)]

lst = [1,3,4,6,3,6,8]

print(Reversed(lst)) 

#Reverse an array
#Using the reverse() built in function
def Reversed(lst):
    lst.reverse()
    return lst

lst = [1,3,4,6,3,6,8]

print(Reversed(lst))

#Reverse an array
#Using the slicing technique
def Reversed(lst):
    new_lst = lst[::-1]
    return new_lst

lst = [1,3,4,6,3,6,8]

print(Reversed(lst))

#Reverse an array
#using a program
def Reversed(A,start,end):
    if start >= end:
        return
    A[start],A[end] = A[end],A[start]
    Reversed(A,start+1,end-1)


lst = [1,3,4,6,3,6,8]

Reversed(lst,0,6)
print(lst)


#Reverse an array
#using a program
def Reversed(A,start,end):
    while start >= end:
        A[start],A[end] = A[end],A[start]
        start += 1
        end -= 1


lst = [1,3,4,6,3,6,8]

Reversed(lst,0,6)
print(lst)


Find the maximum and minimum in an array

Using numpy   import numpy arr = numpy . array ([ 1 , 2 , 5 , 7 , 2 , 6 , 8 ]) max_element = numpy . max ( arr ) min_element = numpy . mi...