Python :: Aufgabe #4
11 Lösungen
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
Als Übergabe-Parrameter wird das Array übergeben.
Testen Sie die Funktion mit 2 Abfragen, bzw. mit 2 verschiedenen Arrays.
Hilfestellung: Sortierverfahren - Wikipedia
Lösungen:
array = ([2,1,5,8,4])
print("Maximalwert : " , max(array))
print("Minimalwert : " , min(array))Konsolenausgabe:
Maximalwert : 8
Minimalwert : 1
#!/usr/bin/python
#
#--------------------------------
# title: search or sort
# author: Excpt0r
# licence: use only with attribution, thanks! =)
#--------------------------------
#
# task: program a function which returns the min and max value
# from an integer array.
# solution: O(n) if you don't want to sort the array by yourself
# but you can also do bubblesort (very simple, but O(n^2) )
# or something similar. here is both!
def bubblesort(array):
n = len(array)
while True:
newn = 1
for i in range(n-1):
if ( array[i] > array[i+1]):
temp = array[i+1]
array[i+1] = array[i]
array[i] = temp
newn = i+1
n = newn
if ( n <= 1):
return (array[0],array[len(array)-1])
break
def minmax(array):
min, max = None, None
for x in array:
if (min == None and max == None):
min = x
max = x
elif ( x < min ):
min = x
elif ( x > max ):
max = x
return (min,max)
def main():
array1 = [13,12,11,10,9,8,7,6,5,4,3,2,1]
array2 = [52,12,23,52,73,72,41,12,5,2,7,11,4124,635,123,15,1616,727,142,1532,3678,215]
print "\n\tGet minima and maxima from array via search or sort! "
print "\n Minimum Array 1: ", minmax(array1)[0]
print " Maximum Array 1: ", minmax(array1)[1]
print "\n Minimum Array 2: ", minmax(array2)[0]
print " Maximum Array 2: ", minmax(array2)[1]
print "\n Minimum Array 1, bubblesort: ", bubblesort(array1)[0]
print " Maximum Array 1, bubblesort: ", bubblesort(array1)[1]
print "\n Minimum Array 2, bubblesort: ", bubblesort(array2)[0]
print " Maximum Array 2, bubblesort: ", bubblesort(array2)[1]
return 0
if __name__ == "__main__":
main()
# coding: utf8
def minima_maxima(x):
mini = min(x)
maxi = max(x)
return (mini, maxi)
x = [34,23,567,1]
(mini, maxi) = minima_maxima(x)
print "Minimum: " + str(mini)
print "Maximum: " + str(maxi)
x = [2342,456,657,234,543]
(mini, maxi) = minima_maxima(x)
print "Minimum: " + str(mini)
print "Maximum: " + str(maxi) Ausgabe:
Minimum: 1
Maximum: 567
Minimum: 234
Maximum: 2342
#!/usr/bin/python
# -*- coding: utf-8 -*-
def min_max(array):
min = array[0]
max = array[0]
for n in array:
if n < max and n < min:
min = n
elif n > max:
max = n
print min, max
min_max(input("Gib das array ein: "))
# -*- coding: utf-8 -*-
# Bubblesort
def minmax(a):
x = len(a)
while x > 0:
for i in range(0, len(a)-1):
if a[i] > a[i + 1]:
tmp = a[i]
a[i] = a[i + 1]
a[i + 1] = tmp
x = x - 1
return (a[0], a[len(a)-1])
# Bsp
a1 = [1, 1, 0, 0, 0, 1, 0, 0]
a2 = [50, 1, 78, 24, 1000, 9, 345, 69, 5, 999]
print "Beispiel-Array 1:", a1
print ""
print "Minimalwert:", minmax(a1)[0]
print "Maximalwert:", minmax(a1)[1]
print ""
print "Beispiel-Array 2:", a2
print ""
print "Minimalwert:", minmax(a2)[0]
print "Maximalwert:", minmax(a2)[1]Ausgabe:
Beispiel-Array 1: [1, 1, 0, 0, 0, 1, 0, 0]
Minimalwert: 0
Maximalwert: 1
Beispiel-Array 2: [50, 1, 78, 24, 1000, 9, 345, 69, 5, 999]
Minimalwert: 1
Maximalwert: 1000
Liste wird mit dem RadixSort Algorithmus sortiert und dann das erste und letzte Element der Liste ausgegeben.
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()array = [634,3461,93,25,64,25,732] print(max(array)) print(min(array))
# arraysort.py
def sortList(liste):
laenge = len(liste)
swapped = True
while (swapped == True) or (laenge > 1):
swapped = False
if laenge > 1:
laenge = int(float(laenge)/1.3)
for i in range(0, (len(liste)-laenge)):
if liste[i] > liste[i+laenge]:
liste[i], liste[i+laenge] = liste[i+laenge], liste[i]
swapped = True
return liste
if __name__ == "__main__":
eingabe = input("Gib eine Zahlenmenge (durch Leerzeichen getrennt) ein: ")
liste = [int(x) for x in eingabe.split()]
liste = sortList(liste)
print("Kleinstes Element: " + str(liste[0]))
print("Größtes Element: " + str(liste[-1]))
import random
def _MinMax(listToSort: []):
listToSort.sort()
length = len(listToSort)
return (str("Minimum:")+str(listToSort[0])+str("\nMaximum:")+str(listToSort[length-1]))
array1 = []
for i in range(25):
randomizer = random.randrange(0,55)
array1.append(randomizer)
print("Dieses Array wird benutzt:\n",array1)
print(_MinMax(array1))
input()
from random import randrange
loop = True
while loop:
def minmax(array):
array2 = sorted(array)
minimum = array2[0]
maximum = array2[len(array)-1]
return "Minimum:", minimum, "\tMaximum:", maximum, "\tListe:", array
def listen_ersteller(groesse, anfang, ende):
Array = []
for i in range(groesse):
zufallszahl = randrange(anfang, ende)
Array.append(zufallszahl)
return Array
print("Gib die Groesse der Liste ein")
g = int(input())
print("Gib den Anfangswert für das Intervall ein")
a = int(input())
print("Gib den Endwert für das Intervall ein")
e = int(input())
print(*(minmax(listen_ersteller(g, a, e))))
Lösung 1:
Python-Code
Ergebnis
Lösung 2:
Python-Code
Ergebnis
# 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.
def min_max(array):
"""
Sucht nach Min/ Max Wert in der Liste
:param array: Liste aus der Min/ Max gesucht wird
:return: min-Wert und max-Wert
"""
return min(array), max(array)
array_1 = [5, 1, 200, 50, 3]
array_2 = [900, 700, 500, 300, 100]
# Doppelter Aufruf der Funktion min_max
x = min_max(array_1) + min_max(array_2)
# Ausgabe der Min- und Max-Werte
print(f"Das Minimum aus Array 1 lautet {x[0]} und das Maximum lautet {x[1]}")
print(f"Das Minimum aus Array 2 lautet {x[2]} und das Maximum lautet {x[3]}")
Ergebnis
Konsolenausgabe:
Das Minimum aus Array 1 lautet 1 und das Maximum lautet 200
Das Minimum aus Array 2 lautet 100 und das Maximum lautet 900
Lösung 2:
def min_max_bubblesort(array):
"""
Sucht nach Min/ Max Wert in der Liste
:param array: Liste aus der Min/ Max gesucht wird
:return: min-Wert und max-Wert
"""
durchlauf = len(array) - 1
while durchlauf > 0:
for n in range(1, durchlauf + 1):
if array[n - 1] > array[n]:
zwischen_speicher = array[n - 1]
array[n - 1] = array[n]
array[n] = zwischen_speicher
durchlauf -= 1
return array[0], array[-1]
array_1 = [5, 1, 200, 50, 3, 0]
array_2 = [900, 700, 500, 300, 100]
# Doppelter Aufruf der Funktion min_max
x = min_max_bubblesort(array_1) + min_max_bubblesort(array_2)
# Ausgabe der Min- und Max-Werte
print(f"Das Minimum aus Array 1 lautet {x[0]} und das Maximum lautet {x[1]}")
print(f"Das Minimum aus Array 2 lautet {x[2]} und das Maximum lautet {x[3]}")
Ergebnis
Konsolenausgabe:
Das Minimum aus Array 1 lautet 0 und das Maximum lautet 200
Das Minimum aus Array 2 lautet 100 und das Maximum lautet 900
