Python :: Aufgabe #4 :: Lösung #6

11 Lösungen Lösungen öffentlich
#4

Funktion welche Minimum und Maximum aus einem Array zurückgibt

Anfänger - Python von Gustl - 07.12.2012 um 17:36 Uhr
Programmieren Sie eine Funktion welche aus einem Array von Integer-Elementen das Minimum und Maximum zurückgibt.
Als Übergabe-Parrameter wird das Array übergeben.

Testen Sie die Funktion mit 2 Abfragen, bzw. mit 2 verschiedenen Arrays.
Hilfestellung: Sortierverfahren - Wikipedia
#6
vote_ok
von ah3n0bar6us (660 Punkte) - 21.07.2016 um 02:24 Uhr
Liste wird mit dem RadixSort Algorithmus sortiert und dann das erste und letzte Element der Liste ausgegeben.

Quellcode ausblenden Python-Code
#!/usr/bin/env python3
from collections import defaultdict
from random import randint

def radixSort(listOfNumbers):
    """ sort a list without to compare the digits """
    generateDic     = defaultdict(list)
    result          = []
    resultNew       = []
    checkListLen    = len(listOfNumbers)
    biggestChar     = 0

    for i in listOfNumbers:
        a = len(str(i))
        if a > biggestChar:
            biggestChar = a

    for m in range(0,biggestChar):
        for i in range(0,checkListLen):
            try:
                stringDigits    = str(listOfNumbers[i])
                stringDigitsLen = len(stringDigits)
                if stringDigitsLen < m+1:
                    generateDic["0"].append(listOfNumbers[i])
                else:
                    generateDic[stringDigits[stringDigitsLen-1-m]].append(listOfNumbers[i])
            except IndexError:
                pass
        #print(generateDic)

        for j in range(0,10):
            if str(j) in generateDic:
                result.append(generateDic[str(j)])

        for k in range(0,len(result)):
            for l in range(0,len(result[k])):
                resultNew.append((result[k])[l])

        generateDic.clear()
        result, listOfNumbers, resultNew = [], resultNew, []
        #print("SortierteListe nach 10^",m,": ",listOfNumbers)
    print("Sortiert:m ",listOfNumbers)
    return listOfNumbers

def getMaxMin(getAList):
    print("Minimum: ",getAList[0],"Maximum",getAList[len(getAList)-1])

def randDigits():
    a = []
    for i in range(0,20):
        a.append(randint(0,1000))
    print("Unsortiert: ",a)
    return a

def main():
    print("Erster Test: ")
    getMaxMin(radixSort(randDigits()))
    print("Zweiter Test: ")
    getMaxMin(radixSort(randDigits()))

if __name__ == "__main__":
    main()

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben