插入排序:打印时给我一无所获



我通过堆栈进行了搜索,但是我仍然无法工作。我正在学习如何构建算法,并需要编码算法(使用插入排序(以升序顺序对数组进行排序并显示其包含的值。目前,我得到

 def sortedRainfall (rainfall):
        month = ['January','Febuary','March','April','May','June','July','August'
                    ,'September','October','November','December']
        for index in range(1,len(rainfall)):
            value = rainfall[index]
            i = index - 1
            while (i >= 0):
                if value < rainfall[i]:
                    rainfall[i+1] = rainfall[i] #shift number in slot i right  to slot i + 1
                    rainfall[i] = value #shif value left into slot i
                    i = i - 1
                else:
                    break
        return

完整代码如下:

#Main module --------------------------------------------------------------------------------------------------------------
def main ():
    rainfall = rainInput () #Gets rainfall per month from user.
    totalRain = totalRainfall (rainfall) #Totals rainfall from user inputted data.
    average_Rainfall = averageRainfall (totalRain) #Averages rainfall for the year.
    highestMonth, highestMonthly = highestMonthNumber (rainfall) #Finds highest month of rainfall and displays to the user. 
    lowestMonth, lowestMonthly = lowestMonthNumber (rainfall) #Finds lowest month of rainfall and displays to the user. ---
    rainfallSorted = sortedRainfall(rainfall)
    print #this is for spacing output
    print ('The total rainfall for the year was: ' +str(totalRain) + ' inche(s)')
    print #this is for spacing output
    print ('The average rainfall for the year was: ' +str(average_Rainfall) +
          ' inche(s)') 
    print #this is for spacing in output
    print ('The highest amount of rain was', highestMonthly, 'in' , highestMonth)
    print #this is for spacing in output
    print ('The lowest amount of rain was', lowestMonthly, 'in' , lowestMonth)
    print(rainfallSorted)

#Gets rainfall per month from user. ---------------------------------------------------------------------------------------
def rainInput ():
    rainfall = ['January','Febuary','March','April','May','June','July','August'
    ,'September','October','November','December']
    month = 0
    while month < len(rainfall):
        rainfall[month] = int(input ('Please enter the amount for month ' + str
        (month + 1) + ': '))
        month += 1
        rainfall.append
    return rainfall
#Totals rainfall from user inputted data. ---------------------------------------------------------------------------------
def totalRainfall (rainfall):
    return sum([int(x) for x in rainfall])
#Averages rainfall for the year. ------------------------------------------------------------------------------------------
def averageRainfall (totalRain):
    average_Rainfall = totalRain / 12
    return average_Rainfall
#Finds highest month of rainfall and displays to the user. ----------------------------------------------------------------
def highestMonthNumber (rainfall):
    month = ['January','Febuary','March','April','May','June','July','August'
                ,'September','October','November','December']
    highestMonthly = 0
    highestMonth = 0
    for m, n in enumerate(rainfall):
        if n > highestMonthly:
            highestMonthly = n
            highestMonth = m
    return month[highestMonth], highestMonthly
#Finds lowest month of rainfall and displays to the user. -----------------------------------------------------------------
def lowestMonthNumber (rainfall):
    month = ['January','Febuary','March','April','May','June','July','August'
                ,'September','October','November','December']
    lowestMonthly = 1000000000
    lowestMonth = 0
    for m, n in enumerate(rainfall):
        if n < lowestMonthly:
            lowestMonthly = n
            lowestMonth = m
    return month[lowestMonth], lowestMonthly
def sortedRainfall (rainfall):
    month = ['January','Febuary','March','April','May','June','July','August'
                ,'September','October','November','December']
    for index in range(1,len(rainfall)):
        value = rainfall[index]
        i = index - 1
        while (i >= 0):
            if value < rainfall[i]:
                rainfall[i+1] = rainfall[i] #shift number in slot i right  to slot i + 1
                rainfall[i] = value #shif value left into slot i
                i = i - 1
            else:
                break
    return
main()
def sortNames(listOfNames):
    sortedNames = []
    for index in range(1,len(listOfNames)):
        value = listOfNames[index]
        i = index - 1
        while (i >= 0):
            if value < listOfNames[i]:
                listOfNames[i+1] = listOfNames[i] #shift number in slot i right  to slot i + 1
                listOfNames[i] = value #shif value left into slot i
                i = i - 1
            else:
                break
    return rainfall

只需要退还东西。

尝试以下:

def sortedRainfall (rainfall):
for i in range(1, len(rainfall)):
    if rainfall[i] < rainfall[i-1]:
        for j in range(i):
            if rainfall[i] < rainfall[j]:
                rainfall[i], rainfall[j] = rainfall[j], rainfall[i]
return rainfall

最新更新