-
1. 已知数组 [3, 5, -2, 7, 4] , 获取数组中的最大值并打印
// 1.定义一个数组, 并将数据保存到数组中 let arr = [3, 5, -2, 7, 4]; // 2.定义一个变量保存最大值 let max = arr[0]; // 先假设最大值为arr[0] // 3.利用循环遍历数组 for(let i = 1; i < arr.length; i++){ // 4.判断最大值 if(arr[i] > max){ max = arr[i]; } } // 5.输出最大值 console.log(max);
-
2. 要求用户输入3个0~9的数, 输出0~9中哪些用户没有输入过, 输入的格式x, y, z
// 以下代码的缺陷: 扩展性不好, 当需求变更时代码也要做相应的变化 let str = prompt("请输入三个0~9的整数, 以逗号隔开"); // 字符串的split方法可以根据传入的参数切割字符串, 转换成一个数组之后返回给我们 let arr = str.split(",").map(Number); for(let i = 0; i < 10; i++){ if(arr[0] == i || arr[1] == i || arr[2] == i){ continue; } console.log(i); }
// 对上面代码进行优化 let str = prompt("请输入三个0~9的整数, 以逗号隔开"); // 字符串的split方法可以根据传入的参数切割字符串, 转换成一个数组之后返回给我们 let arr = str.split(",").map(Number); let res = new Array(10); for(let i = 0; i < arr.length; i++){ // 拿到用户输入的数据 let str = arr[i]; // 将用户输入的数据作为新数组的索引, 然后设定一个值保存到索引对应的那个存储空间中 res[str] = 666; } for(let i = 0; i < res.length; i++){ // 取出新数组中的元素判断是否是666 if(res[i] === 666){ // 是666就不输出 continue; } // 不是666就输出 console.log(i); }
-
计数排序
-
3. 要求用户输入5个0~9的数, 排序后输出, 输入的格式; x, y, z, ...
// 以下代码的缺陷: 不能对重复的数据进行排序 let str = prompt("请输入五个0~9的整数, 以逗号隔开"); let arr = str.split(",").map(Number); let res = new Array(10); for(let i = 0; i < arr.length; i++){ let str = arr[i]; res[str] = 6; } for(let i = 0; i < res.length; i++){ if(6 === res[i]){ console.log(i); } }
// 对以上代码进行优化 let str = prompt("请输入五个0~9的整数, 以逗号隔开"); let arr = str.split(",").map(Number); let res = new Array(10); // 数组的fill方法的作用: 设置数组中所有元素的值为指定的数据 res.fill(0); for(let i = 0; i < arr.length; i++){ let str = arr[i]; res[str] = res[str] + 1; } for(let i = 0; i < res.length; i++){ for(let j = 0; j < res[i]; j++){ // console.log(i); document.write(i); document.write("<br>"); } }
-
-
选择排序
-
4. 要求用户输入4个数字, 排序后输出
let str = prompt("请输入4个数字, 以逗号隔开"); let arr = str.split(",").map(Number); console.log(arr); let len = arr.length; // 这里之所以是len-1,是因为到最后两个元素,交换位置,整个数组就已经排好序了。 for(let i = 0; i < len - 1; i++){ // 声明一个变量,作为标志位 // 如果某次循环完后,没有任何两数进行交换,就将标志位设置为 true,表示排序完成 let done = true; let min = arr[i]; // j = i+1是把与自己比较的情况给省略掉 for(let j = i+1; j < len; j++){ if(arr[j] < min){ // 利用数组的解构赋值交换数据 [arr[j], min] = [min, arr[j]]; done = false; } } arr[i] = min; if(done){ break; } } console.log(arr);
-
-
冒泡排序
-
4. 要求用户输入4个数字, 排序后输出
let str = prompt("请输入4个数字, 以逗号隔开"); let arr = str.split(",").map(Number); console.log(arr); let max = arr.length - 1; for(let i = 0; i < max; i++){ // 声明一个变量,作为标志位 // 如果某次循环完后,没有任何两数进行交换,就将标志位设置为 true,表示排序完成 let done = true; for(let j = 0; j < max - i; j++){ if(arr[j] > arr[j + 1]){ // 利用数组的解构赋值交换数据 [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; done = false; } } if(done){ break; } } console.log(arr);
-