Esempio n. 1
0
 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:]
Esempio n. 2
0
    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
Esempio n. 3
0
 def test_bubbleSort2():
     a = NumberUtils.generateRandomNumbers(0, 10000, 100, allowDuplicates=False)
     s = BubbleSort.bubbleSort(a)
     print(s)
Esempio n. 4
0
 def test_isolateNegatives():
     a = [-1, -2, -3, -7, -17, -27, -18, -541, -8, -7, 7]
     result = NumberUtils.isolateNegatives(a)
     print("test_isolateNegatives:", result)
Esempio n. 5
0
 def test_mergeSort3():
     a = NumberUtils.generateRandomNumbers(0, 10000, 100, allowDuplicates=False)
     s = SortingUtils.mergeSort(a)
     print("sorted: ", s)
Esempio n. 6
0
 def nCk_formula(n, k):
     n = NumberUtils.factorial(n)
     d = NumberUtils.factorial(n - k) * NumberUtils.factorial(k)
     return int(n / d)
Esempio n. 7
0
 def test_insertionSort2():
     a = NumberUtils.generateRandomNumbers(0, 100, 50, allowDuplicates=True)
     s = InsertionSort.insertionSort(a)
     print("s:", s)
Esempio n. 8
0
 def nPk_formula(self, n, k):
     perms = NumberUtils.factorial(n)/NumberUtils.factorial(n-k)
     return int(perms)
Esempio n. 9
0
    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))