原理:每一圈确定出一个当前最小的元素,然后跟最前面的元素交换位置。
已经比较出来的最小元素,不用再参与后面的循环。
比如:第一圈确定出来的跟第一交换位置。
第二圈确定出来的跟第二交换位置。
外圈负责整个数组比较的次数;
内圈负责每个元素之间的比较;
内圈比较时候的起始位置
i=>0 1 2...
i=>1 2 3...
所以内圈循环的起始位置应该是j=i+1;
//内圈的结束位置
//由于内圈循环时,每次都要对比到最后一个元素,所以j<arr.length
//要求生成一个10个元素的随机数数组,随机数取值范围(1-100)
[图片上传失败...(image-76a9f8-1648866193958)]
//声明一个空数组
var arr1 = [];
for(var i =0;i<10;i++){
arr1[i]=Math.round(Math.random()*100);
}
console.log(arr1);
//排序
//外圈控制整个数组循环的次数
for(i=0;i<arr.length-1;i++){
//外圈每一次开始循环的时候,都将当前循环的第一个元素,先假设为最小的元素,然后拿着这个元素跟内圈循环的其他元素做对比,如果有元素比min更小,那么这个元素就是新的min
var min = i;
//内圈控制元素之间的对比
for(j=i+1;j<arr.length;j++){
if(arr[j]<arr[min]){
min = j;
}
}
//因为一整个圈比完之后才会换位置,所以在外层for循环换位置
//将确定出来的min跟当前参与循环的第一个元素换位置
var num = arr[i];
arr[i] = arr[min];
arr[min] = num;
}
console.log(arr);