def threeLargestNums(array): # isolate negatives negs, poss = NumberUtils.isolateNegatives(array) #print("negs: {}\nposs:{}".format(negs, poss)) negsSorted = ThreeLargestNums.sortNegatives(negs) #print("negsSorted:", negsSorted) possSorted = SortingUtils.countingSort(poss) array = negsSorted + possSorted return array[-3:]
def countingSort(array): # if the array is blank, then return it if not array: return array # identify highest value k in input array k = NumberUtils.getHighestVal(array) #print("highest val: {}".format(k)) # initialize counts array (need to include index up to highest val) counts = [0] * (k+1) #print("counts: ", counts) sa = [0] * len(array) # sorted array #print("sa initially: {}".format(sa)) # count number of times each element in input array occurs # then record that with the counts array for i in range(len(array)): input_val = array[i] #print("input_val: {}".format(input_val)) counts[input_val] = counts[input_val] + 1 #print("counts: {}, elements: {}".format(counts, len(counts))) # create cumulative count of elements for j in range(1, k+1): counts[j] = counts[j] + counts[j-1] #print("j={}, cumulative count of elements: {}".format(j, counts)) # sort the data for m in range(len(array)-1, -1, -1): input_m = array[m] #print("m={}, input_m={}".format(m,input_m)) c_of_input_m = counts[input_m] #print(" c_of_input_m: {}".format(c_of_input_m)) sa[c_of_input_m-1] = input_m #print(" sa: {}".format(sa)) counts[input_m] = counts[input_m] - 1 #print(" counts:", counts) return sa
def test_bubbleSort2(): a = NumberUtils.generateRandomNumbers(0, 10000, 100, allowDuplicates=False) s = BubbleSort.bubbleSort(a) print(s)
def test_isolateNegatives(): a = [-1, -2, -3, -7, -17, -27, -18, -541, -8, -7, 7] result = NumberUtils.isolateNegatives(a) print("test_isolateNegatives:", result)
def test_mergeSort3(): a = NumberUtils.generateRandomNumbers(0, 10000, 100, allowDuplicates=False) s = SortingUtils.mergeSort(a) print("sorted: ", s)
def nCk_formula(n, k): n = NumberUtils.factorial(n) d = NumberUtils.factorial(n - k) * NumberUtils.factorial(k) return int(n / d)
def test_insertionSort2(): a = NumberUtils.generateRandomNumbers(0, 100, 50, allowDuplicates=True) s = InsertionSort.insertionSort(a) print("s:", s)
def nPk_formula(self, n, k): perms = NumberUtils.factorial(n)/NumberUtils.factorial(n-k) return int(perms)
def __init__(self, table_name: str, table_name_plural: str, field_list: [{str, str}]) -> object: self.generated_serial = NumberUtils.random(18) self.setTableName(table_name) self.setTableNamePlural(table_name_plural) self.field_list = list(map(lambda field: Field(field['name'], field['data_type']), field_list))