038-选择排序
1、冒泡排序。
2、算法过程。
(1)、a[0] 与 a[1],a[2],...,a[length-1] 比较。表示数组第一个元素与【数组第二个元素到最后一个元素】比较一趟。比较次数为:length-1。
(2)、a[1] 与 a[2],a[3],...,a[length-1] 比较。表示数组第二个元素与【数组第三个元素到最后一个元素】比较一趟。比较次数为:length-2。
(3)、a[i] 与 a[i+1],a[i+2],...,a[length-1] 比较。表示数组第i个元素与【数组第i+1个元素到最后一个元素】比较一趟。比较次数为:length-i-1。
(4)......
(5)、a[length-2] 与 a[length-1] 比较。表示数组第length-2 个元素与【数组最后一个元素】比较一趟。比较次数为:length-1。比较次数为:1。
/*
算法描述:
1、举例说明,有一个数组元素依次为:5、4、3、2、1
该算法将外循环下标索引控制在0~4,内循环下标索引控制1~4
先将a[0]元素与a[1]、a[2]、a[3]、a[4]比较大小:
3、5、4、2、1
2、5、4、3、1
1、5、4、3、2 --->>结果是获得第1最小,比较4次
然后将a[1]与a[2]、a[3]、a[4]比较大小:
1、4、5、3、2
1、3、5、4、2
1、2、5、4、3 --->>结果是获得第2最小,比较3次
然后将a[2]与a[3]、a[4]比较大小:
1、2、4、5、3
1、2、3、5、4 --->>结果是获得第3最小,比较2次
然后将a[3]与a[4]比较大小:
1、2、3、4、5 --->>结果是获得第4最小,比较1次
当问题规模为n时,即当有n个数据比较时,则会执行1+2+....+(n-1),即:n*(n-1)/2次比较。
即时间复杂度是: O(n^2) -->>平方阶
*/
3、算法的完美实现。