冒泡排序和选择排序
1、作用和原理:
将数组中的数值按照执行的顺序,从小到大排序。
2、核心内容:
冒泡排序
原理:
相邻的两个单位比较存储的数据,如果第一个单元的数据较大,就将两个相邻单元交换存储数据。
过程:
从起始的单元开始比较,第一次循环会选择出一个最大值,放在数组所有单元的最后,之后的每次循环,都会比较出一个本次循环的最大值,放在当前参与比较的单元的最后,之前已经比较选出的单元就不会再参与下一次的比较。
优化:
1, 单次循环,最后一个单元通过倒数第二个单元参与比较,最后一个单元就不参与单次循环;
2, 之前比较出的最大值,不再参与下一次的比较;
3, n个单元,只要循环比较n-1次,最后就剩一个单元时,不用再循环比较。
核心:交换存储的数据
两个相邻的单元比较数据大小,第一个单元数值较大就交换两个单元存储的数据。
代码解析:
效果图:
选择排序
先定义循环的起始位置,默认为最小值所在位置,从起始位置的下一个位置开始,执行循环,如果有位置上的数值小于存储索引位置上的数值,就存储这个位置的索引值,循环结束比较存储的索引,是否是起始位置的索引。如果不是,就交换两个位置上的数值,会将本次循环的最小值放置在循环的起始位置上,再执行多次循环,完成排序。
核心:
找到最小值的索引,与起始位置交换数值,先找索引再交换数值。
优化:
1,之前比较的数值不再参与下一次比较
2,n个单元,只要比较n-1次
代码解析:
效果图:
总结:
冒泡排序:
每次发生大小顺序问题,都要执行数据交换操作,执行数据交换的次数高于选择排序,执行数据交换的操作比较繁琐,执行次数过多,执行效率低。
选择排序:
如果发生大小顺序问题,只是做赋值索引的操作,等循环完成执行判断,做一次数据交换 。