概述:
5.1冒泡排序算法
冒泡排序的每一轮都选出剩下元素中的最大者放到了数组的最后位置,下一轮冒泡时就不用考虑这个元素了
bubbleSort.java P61
5.2选择排序算法
排序结果:数组左侧是最小值,尾部是最大值
算法思想:每一轮比较找出最小值,然后将其放在最左侧
算法的时间复杂度:比较次数O(N2) 交换次数O(N)
5.3插入排序算法
排序结果:将数组按照从小到大的顺序排列,数组尾部元素值最大
算法思想:每轮循环插入一个数
还是原来的无序数组,只是新加一个tmp存储待插入的数组元素
待插入数组元素左侧的序列是有序的
在待插入元素的左侧的有序序列中查找到待插入元素应该插入的位置key
Array[key+1]至array[待插入元素下标-1]之间的所有元素后移一位
Array[key]=tmp
开始新一轮的插入
算法的时间复杂度:
P73 insertionSort.java
5.4对象排序(如stu_arr将student类型的数组元素按照关键字排序)
-
- 排序函数写在StudentArray.java中
- 按照某关键字排序
- 选定排序算法(选择、冒泡、插入排序算法)
- 算法是一样的,只有参与比较的对象不同stu_arr[i].getName().compareToIgnoreCase( )>0
- 字符串的比较
P76 ObjectSort.java
5.5几种简单排序之间的比较
也就是说可以就地完成排序,不需要另外开辟数组空间存储数组中数据。
小结:
遗留问题:第三章的“编程作业”