数组排序程序

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

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

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

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

  用while循环写的程序

  

a = []i = 0while i<10:    score = int(input("请输入分数:"))    a.append(score)    i+=1i = 0score_min = a[0]score_max = a[0]score_sum = 0score_avg = 0while 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 +=1score_avg = (score_sum-score_max-score_min)/8print("最大的分数是:",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\t去掉最小值:%.2f\n最终的平均得分是:%.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)

  

原文地址:https://www.cnblogs.com/thoughtful-actors/p/9484263.html

时间: 2024-10-13 14:47:27

数组排序程序的相关文章

实验报告二

一.  题目简介 1.所选题目:数组排序 2.编程工具:Eclipse 3.实现功能:用户给定一系列数字通过运行数组排序的程序可以将这些数字按照一定顺序依次排列: 1.2-3个数字按照从大到小的顺序依次排列 2.3个数字以上按照从小到大的顺序依次排列 二.  源码的github链接: https://github.com/Kobe99999/test/blob/master/IntSort源码 三.所设计的模块测试用例: public class TestIntSort { public sta

2016年总结:教师路的开启,爱情味的初尝 (上)

哎!2016年终于结束了,感觉这是自己二十五年生命中最漫长的一年,发生的事情真的太多太多.有毕业母校.同学.老师和朋友的留念,毕竟在帝都一待六年,还是有太多的不舍与情怀:有找工作.做毕业设计以及帮助二十多个陌生人完成毕业设计的艰辛,这些人大多数都是从未谋面的过客,只是自己刚好会写点代码,多做点挺好:有为了自己从小的教师梦,来回奔波京黔,最终放弃互联网.离开北京,虽然遗憾,但从未后悔,有的只是享受:还有讲台前给学生分享自己的大学生活,以及他们带给我的无数感动,数不清的加班夜和凌晨三点的财大:更有年

1-16作业

<第 04 讲:一维数组> 1. (*)先调试,调试成功后抄写下列程序: #include <stdio.h> #define SIZE 10 int main(int argc, char *argv[]) { int a[SIZE] = {0},i= 0; for(i = 0; i < SIZE; i++){ a[i] = i+10; printf("a[%d] = %d\n", i, a[i]); } return 0; } 2. (*)将第一题中的

BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问.Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料.Mat

黑马程序员——数组

一.概念         同一种类型数据的集合.简单的来说就是一容器,用来装东西的. 使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 二.一维数组的格式 格式1:元素类型 [ ]数组名 = new 元素类型 [元素个数或数组长度] ; 如: int []  arr = new int [3];  也可以写成: int arr[] = new int[3]; 格式2:元素类型 []数组名 = new 元素类型 [ ]{元素1,元素2,…}; 如: int []  arr =

《C程序设计语言(第2版&#183;新版)》第5章 指针与数组

指针:保存变量地址的变量:在 C中应用广泛,因为1)指针往往是表达某个计算的唯一途径:2)使用指针往往可以写出更高效紧凑的代码:另一方面,1)指针和goto一样,会导致程序难以理解:2)粗心会很容易导致指针指向了错误的地方: 指针与数组关系密切: ANSI C明确制定了操纵指针的规则,并且使用void*代替char*作为通用指针的类型: 5.1 指针与地址 内存的组织:一系列连续编号或编址的存储单元,单元可以单个操纵也可以以连续成组的方式操纵:通常1个字节可以存放一个char,2个相邻字节可以存

怎样写出一个较好的高速排序程序

写出一个较好的高速排序程序 高速排序是经常使用的排序算法之中的一个,但要想写出一个又快又准的使用程序,就不是那么简单了 须要注意的事项 首先要写正确.通常使用递归实现.其递归相当于二叉树展开,因此假设要用迭代实现的话须要使用一个队列来保存兴许遍历信息. 高速排序须要找到一个pivot值,假设顺序选择pivot则易造成N^2的复杂度,假设使用随机数则效果最好,但开销又太大,採取三数中值法比較合适.三数中值法指的是选取第一个值,最后一个值,数组中间的值的中值.有文献表明能够提升5%的执行时间. 当数

【BZOJ3289】Mato的文件管理 莫队算法+树状数组

[BZOJ3289]Mato的文件管理 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问.Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料.Mato有一个习惯,他总是从文件大小从小到大看资料.他先把要看的文件按编号顺序依次拷贝出来,再用他写的排序程序给文件大小排序.排序程序可以在1单位时间内交换2个相邻的文件(因为加密

【bzoj3289】Mato的文件管理 离散化+莫队算法+树状数组

原文地址:http://www.cnblogs.com/GXZlegend/p/6805224.html 题目描述 Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问.Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料.Mato有一个习惯,他总是从文件大小从小到大看资料.他先把要看的文件按编号顺序依次拷贝出来,再用他写的排序程序给文件大小排序.排