数组排序程序

Posted thoughtful-actors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组排序程序相关的知识,希望对你有一定的参考价值。

1、十个评委给学生打分,规则是去掉最高分和最低分,然后求平均值。

  分析:首先求出最高分和最低分,然后再求和,最后再求平均值。

     先把十个分数看成是一个列表里的元素,求最高分时,先假设第一个最大,然后去跟相邻的比较,如果大就保留,如果小就保留另一个。

     关键是不能引入外值,只能在十个分数里选一个先作为最大的,然后去比较。求最小是同样的道理。

  用while循环写的程序

  

a = []
i = 0
while i<10:
score = int(input("请输入分数:"))
a.append(score)
i+=1
i = 0
score_min = a[0]
score_max = a[0]
score_sum = 0
score_avg = 0
while i<10:
if a[i] > score_max:
score_max = a[i]
if a[i] < score_min:
score_min = a[i]
score_sum = score_sum + a[i]
i +=1
score_avg = (score_sum-score_max-score_min)/8
print("最大的分数是:",score_max)
print("最小的分数是:",score_min)
print("分数的平均值是:",score_avg)

  用for循环写的程序

score_list = []
for i in range(10):
    score = float(input("请输入分数:"))
    score_list.append(score)
score_max = score_list[0]
score_min = score_list[0]
score_sum = 0
for i in range(10):
    if score_list[i] > score_max:
        score_max = score_list[i]
    if score_list[i] < score_min:
        score_min = score_list[i]
    score_sum = score_sum + score_list[i]
score_avg = (score_sum - score_max - score_min)/8
print("去掉最大值:%.2f	去掉最小值:%.2f
最终的平均得分是:%.2f"%(score_max,score_min,score_avg))

2、冒泡排序

  分析:加入给一个列表啊 a=[9,8,7,6,5],如果要想从小到大排序,需要第一个位置的数依次跟其他位置的数比较,比相邻的大,就互换位置,最终到最后的位置。五个元素,循环四次才能确定最大的到最后位置,然后剩四个元素不确定顺序,然后再循环比较三次,确定倒数第二个位置,这样最终需要确定四个位置就需要四趟,每一趟就比上一趟少循环一次。

  关键:四趟是一个外大循环,外循环的次数就是列表的长度减去1

     每一趟的循环都比上一趟少一次,是一个根外循环参数先关的内循环,作用是确定大小位置

     内循环的比较,有可能需要交换彼此的位置,所以,要有一个交换的算法,就是引入一个变量c,当a[i]>a[i+1]时,执行

     c = a[i]

     a[i] = a[i+1]

     a[i+1] = c,最后实现前后位置的值互换

  下面是用while循环写的程序

  

a = [9,8,7,6,5]
j = 0
while j<4:
    i = 0
    while i<(4-j):
        if a[i] > a[i+1]:
            t = a[i]
            a[i] = a[i+1]
            a[i+1] = t
        i += 1
    j += 1
print(a)

  下面是用for循环写的程序

  

a = [9,8,7,6,5]
for j in range((len(a)-1)):
    for i in range((len(a)-1)-j):
        if a[i] > a[i+1]:
            c = a[i]
            a[i] = a[i+1]
            a[i+1] = c
    print(a)

 

  






















以上是关于数组排序程序的主要内容,如果未能解决你的问题,请参考以下文章

在第6731次释放指针后双重免费或损坏

以下代码片段的时间复杂度是多少?

快速排序-递归实现

对数组中的字符串进行排序,使其稀疏

算法排序之堆排序

为什么我不能在此片段中生成唯一对象数组?