<script>
let arr = [3,5,4,2,1]
//第1趟,比较4次
for(let i=0;i<4;i++){
//比较两个相邻大小,如果i位置的值 > i+1位置的值,则交换数据
if(arr[i]>arr[i+1]){
let temp =arr[i]
arr[i] = arr[i+1]
arr[i+1] = temp
}
}
console.log(arr);//[3, 4, 2, 1, 5]
//第2趟,比较3次
for(let i=0;i<3;i++){
//比较两个相邻大小,如果i位置的值 > i+1位置的值,则交换数据
if(arr[i]>arr[i+1]){
let temp =arr[i]
arr[i] = arr[i+1]
arr[i+1] = temp
}
}
console.log(arr);//[3, 2, 1, 4, 5]
//第3趟,比较2次
for(let i=0;i<2;i++){
//比较两个相邻大小,如果i位置的值 > i+1位置的值,则交换数据
if(arr[i]>arr[i+1]){
let temp =arr[i]
arr[i] = arr[i+1]
arr[i+1] = temp
}
}
console.log(arr);//[2, 1, 3, 4, 5]
//第4趟,比较1次[1,2,3,4,5]
/*
比较的数组,每一次比较的趟数,和对应比较的次数关系是
一共比较的趟数 arr.length-1
每一轮比较的次数 是 arr.length - 当前的趟数
*/
//外侧控制比较的趟数,或者轮数
for(let i=1;i<arr.length;i++){
//内层控制比较的次数
for(let j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
let temp =arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
</script>
练习 随机生成[10,80]的10个整数,然后进行冒泡排序
let arr1 =[]
//先生成数
for(let i=0;i<10;i++){
let n = Math.floor( Math.random()*71+10) ;
arr1.push(n)
}
console.log(arr1);
//排序
for(let i =1;i<arr1.length;i++){
for(let j=0;j<arr1.length;j++){
if(arr1[j]>arr1[j+1]){
let temp =arr1[j]
arr1[j] = arr1[j+1]
arr1[j+1] = temp
}
}
}
console.log('冒泡排序');
console.log(arr1);
console.log('最小值是'+arr1[0]);
console.log('最大值是'+arr1[arr1.length-1]);