一、冒泡排序
- 先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置。
- 数组遍历一遍以后,那么最后一个数字就是最大的那个了。
- 然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置。
- 以此类推,最后就会按照顺序把数组排好了。
一、先准备一个数组。
二、遍历数组,把最大的一个放到最后面。
三、按照数组的长度来执行多少次。
至此,数组就已经排序好了。
四、做一些优化。
程序的优化:
1、外层循环优化 :
如果有n个单元参加排序,只需要循环排序n-1次。
最后一次循环排序,会将最后两个数值的大小排序确定。
剩下最后一个单元,没有循环排序,但是大小已经确定,不需要再次循环排序。
2、内层循环优化 :
上一次参与循环,已经决定出来的最大数值,不用参与下一次循环。
第一次排序,少0个单元参与。
第二次排序,少1个单元参与。
第三次排序,少2个单元参与。
…
通过外层循环变量,定义是从 0 开始的循环数值。
每次内层循环,次数,再减去 外层循环变量 的数值。
这样,一个乱序数组的冒泡排序就优化完成了。
二、选择排序
1、先假设数组中的第 0 个就是最小的数字的索引。
2、然后遍历数组,只要有一个数字比定义的索引位置的数值小,那么就替换之前记录的索引。
3、直到数组遍历结束后,就能找到最小的那个索引,然后让最小的索引换到第 0 个的位置。
4、再来第二次遍历,假定第 1 个是最小的数字的索引。
5、在遍历一次数组,找到比 定义的索引位置的数值 小的那个数字的索引。
6、遍历结束后换个位置,依次类推,也可以把数组排序好。
一、准备一个数组,假设数组中的第 0 个就是最小的数字的索引。
二、遍历数组,然后判断,只要有一个数字比定义的索引位置的数值小,那么就替换之前记录的索引。
三、按照数组的长度重复执行上面的代码。
四、做一些优化。
倒数第二次排序完毕以后,剩下的最后一个就是最大的,最后一次循环就没有必要了。