目录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文
@[TOC]
1选择排序(从小到大)
1.1 整体思路;数组各项数据的索引的比较
2.思路逻辑:
2.1->第一次:
+1 找到数组最小数据的索引,一般先假设索引0数据最小
+2 遍历数组,将arr[0]与arr[1]之后的数据依次比较
#1重点:在if判断下,比arr[0] *大的数据* 不会进入,比arr[0] *小的数据* 就会进入判断
#2难点:当比arr[0] *小的数据* 进入,最小索引minIndex改变, 被 *小的数据* 的索引继承。
#3难点: 之后 *小的数据* 与后面的数据再次比较 进行(#1、#2)过程
+3 最终找到最小数据,将其与arr[0]交换(利用第三方变量),最小数据被移到最前方
2.2 ->第二次:
+1 假设数组索引1数据最小
+2 遍历数组,从索引2开始。将arr[1]与arr[2]之后的数据进行比较
#1 重复 第一次(#1 #2 #3 )过程
+3 重复 第一次 +3过程
2.3->重复length-1 次
最后一次,其余8数已排好,仅剩第九数未排。相当于排好
3、代码步骤
3.1.第一次:
var arr = [ 4, 8, 5, 2, 9, 7, 3, 1, 6 ]
var minIndex=0
for (var i=1;i<arr.length;i++){
// 只有经过if判断的i才能进入并为minIndex赋值,arr[minIndex]改变并与后来值比较
if(arr[i] < arr[minIndex]) minIndex=i
}
if(minIndex!=0){
var tmp=arr[0]
arr[0]=arr[minIndex]
arr[minIndex]=tmp
}
console.log(arr)
3.2.整体代码如下(示例):
var arr = [ 4, 8, 5, 2, 9, 7, 3, 1, 6 ]
//从第0次开始
for(var j=0;j<arr.length-1;j++){
var minIndex=j
for(var i=j+1;i<arr.length;i++){
if(arr[i]<arr[minIndex])minIndex=i
}
if(minIndex!=j){
var tmp=arr[j]
arr[j]=arr[minIndex]
arr[minIndex]=tmp
}
}
console.log(arr)