一、观看视频
【01】冒泡排序【02】桶排序
【03】排序库函数
二、研读学生讲义
【学生讲义】【01】冒泡排序【学生讲义】【02】桶排序
【学生讲义】【03】排序库函数
三、练习题(不清楚回头查看有关视频或讲义)
【01】 下面是冒泡排序的算法步骤,不过已经打乱,请重新排好序:
①对数组的第0个数据到n-1个数据进行一次遍历后,最大的一个数据就“冒”到数组第n-1个位置。
②比较相邻的前后两个数据,如果前面数据大于后面的数据,就将两个数据交换。
③令n=n-1,如果n不为0就重复前面二步,否则排序完成。
④读入数据存放在a数组中。
【02】有关冒泡排序,下面的描述错误的是:
①如果两个数据的大小相等,排序后,它们的先后顺序可能改变。
②因为每次只能移动相邻两个数据,所以相比于其它排序,速度较慢。
【03】用循环法实施冒泡排序的步骤如下,不过已经打乱顺序,请把它们排好:
①用循环把n个数输入到数组a中。
②在每次的比较中,若相邻两个数逆序,也就是较大的数在前面,就交换前后两个数,把较大的数调到后面,否则不需调换位置。
③内层循环j枚举第i轮需要比较的次数,第i轮需要比较n-i次。即:a[0]和a[1]比较,a[1]和a[1]比较,···,直到a[n-i-1]和a[n-i]比较。第i轮的第j次就是a[j]与a[j+1]比较。
④外层循环i枚举比较的轮数,n个数需要比较n-1轮。
【04】编写一个冒泡排序函数,编程解决下面的问题:
提示:用algorithm库的swap函数可以直接交换数据。
【05】有关桶排序的描述,错误的是:
①若待排序的值在一个明显有限范围内(整型)时,可设计有限个有序桶(即可以装对象的容器),待排序的值装入对应的桶,桶号就是待排序的值。
②顺序输出各桶的值,将得到有序的序列。
③由于每一个数只需操作一次,所以排序速度很快,效率达到O(n),即时间复杂度与排序对象个数成线性关系。
④同样的排序,用桶排序比用冒泡排序需要更少的空间。
⑤已知一组无序正整数数据a[1],a[2],...,a[n],需要将其按升序排列。首先定义一个数组b[m],且m≥max(a[1],a[2],...,a[n])。接着循环n次,每次b[a[i]]++。
【06】使用桶排序法编程解决下面问题:
【07】有关algorithm的排序库函数的描述,错误的是:
①需要导入algorithm库:#include<algorithm>。
②sort(a + m, a + n) 将数组a复制了一个副本数组b,并把b[m]...b[n-1]从小到大排序,然后返回数组b。
③sort(a + m, a + n, cmp)中的cmp是对两个元素进行比较,返回值为bool类型的函数,这时sort按cmp函数定义的比较规则进行排序。
【08】编程
【09】编程
【10】OpenJudge练习
【洛谷 2670】扫雷游戏
【洛谷 1217】回文质数