本节作业之数组求和及其平均值、求数组最大值、最小值、数组转换为分割字符串、新增数组案例、筛选数组案例、删除指定数组元素、翻转数组、数组排序(冒泡排序)

求数组[2,6,1,7,4]里面所有的元素的和以及平均值

// 声明一个求和变量sum
// 遍历这个数组,把里面每个数组元素加到sum里面
// 用求和变量sum除以数组的长度就可以得到数组的平均值
var sum = 0;
var avg = 0;
var arr = [2,6,1,7,4];
for (var i = 0; i < arr.length; i++) {
	// 我们加的是数组元素 不是计数器
    sum += arr[i];
}
avg = sum / arr.length;
// 输入多个变量
console.log(sum,avg);

求数组[2,6,1,77,52,25,7]中的最大值

// 声明一个保存最大元素的变量max
// 默认最大值可以取数组中的第一个元素
// 遍历这个数组,把里面的每个数组元素和max相比较
// 如果这个数组元素大于max就把这个数组元素存到max里面,否则继续下一轮比较
// 最后输出这个max
        
var arr = [2,6,1,77,52,25,7];
var max = arr[0];
// 本身i应该从0开始,但是我们已经让max默认值为第一个元素,故应从第二个开始
for (var i = 1; i < arr.length; i++) {
	if (arr[i] > max) {
    	max = arr[i]
	}
}
console.log('该数组里面的最大值是:' + max);

求数组[2,6,1,77,52,25,7]中的最小值

var arr = [2,6,1,77,52,25,7];
var min = arr[0];
// 本身i应该从0开始,但是我们已经让max默认值为第一个元素,故应从第二个开始
for (var i = 1; i < arr.length; i++) {
	if (arr[i] < min) {
    	min = arr[i]
    }
}
console.log('该数组里面的最小值是:' + min);

将数组[‘red’,‘green’,‘blue’,‘pink’]转换为字符串,并且用|或其它符号分割

// 输出:'red|green|blue|pink|'
// 需要一个新变量用于存放转换完的字符串str
// 遍历原来的数组,分别把里面的数据取出来,加到字符串里面
// 同时在后面多加一个分隔符

var arr = ['red','green','blue','pink'];
var str = '';
var sep = '|'
for (var i = 0; i < arr.length; i++) {
	str += arr[i] + sep;
}
console.log(str);

新建一个数组,里面存放10个整数(1~10)

// 使用循环来追加数组
// 声明一个空数组arr
// 循环中的计数器i 可以作为数组元素存入
// 由于数组的索引号是从0开始的,因此计数器从0开始更合适,存入的数组元素要+1

var arr = [];
for (var i = 0; i < 10; i++) {
	// arr = i; 错误 不要直接给数组名赋值,否则以前的元素都没了
    arr[i] = i + 1; 
}
console.log(arr);

将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素选出来,放入新数组

// 声明一个新的数组用于存放新数据newArr
// 遍历原来的旧数组,找出大于等于10的元素
// 依次追加给新数组newArr

// 方法一:
var arr = [2,0,6,1,77,0,52,0,25,7];
var newArr = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
	if (arr[i] >= 10) {
    	// newArr[i] = arr[i]; 此写法会产生很多空元素
    	// 新数组索引号应该从0开始 依次递增
    	newArr[j] = arr[i];
        j++;
    }
}
console.log(newArr);

// 方法二:
var arr = [2,0,6,1,77,0,52,0,25,7];
var newArr = [];
// newArr.length就是0,因为刚开始数组是空的
for (var i = 0; i < arr.length; i++) {
	if (arr[i] >= 10) {
    	// newArr[i] = arr[i]; 此写法会产生很多空元素
        // 新数组索引号应该从0开始 依次递增
        newArr[newArr.length] = arr[i];
        /* 1> newArr.length = 0  上式可看做newArr[0] = arr[i];
        2> newArr.length = 1 因为存入了第一个值77 上式可看做newArr[1] = arr[i];
        3> newArr.length = 2 因为存入了第一个值52 上式可看做newArr[2] = arr[i];
        4> newArr.length = 3 因为存入了第一个值25 上式可看做newArr[3] = arr[i]; */
	}
}
console.log(newArr);

将数组[2,0,6,1,77,0,52,0,25,7]中的0去掉后,形成一个不包含0的新数组

// 需要一个新数组用于存放筛选后的数据
// 遍历原来的数组,把不是0的数据添加到新数组里面(此时要注意采用数组名+索引的格式接收数据)
// 新数组里面的个数,用length不断累加

var arr = [2,0,6,1,77,0,52,0,25,7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
	if (arr[i] != 0) {
    	newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);

将数组[‘red’,‘green’,‘blue’,‘pink’,‘purple’]的内容反过来存放

在这里插入图片描述

// 输出:['purple','pink','blue','green','red']
// 声明一个新数组newArr
// 把旧数组索引号第四个取过来(arr.length - 1),给新数组索引号第0个元素(newArr.length)
// 我们采取递减的方式 i--

var arr = ['red','green','blue','pink','purple'];
var newArr = [];
for (var i = arr.length - 1; i >= 0 ; i--) {
	newArr[newArr.length] = arr[i];
}
console.log(newArr);

冒泡排序

  • 冒泡排序:是一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或从大到小)。
    在这里插入图片描述
var arr = [5, 4, 3, 2, 1];
// 外层循环管趟数
for (var i = 0; i <= arr.length - 1; i++) {
	// 内层循环管 每一趟的交换次数
    for (var j = 0; j <= arr.length - i - 1; j++) {
    	// 内部交换两个变量的值 前一个和后一个数组元素相比较
        if (arr[j] > arr[j+1]) {
        	var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}
console.log(arr);
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用以下代码来一个float数组的最大最小值和和平均值: ```python # 定义一个示例数组 arr = [1.2, 3.4, 5.6, 7.8, 9.] # 最大值 max_val = max(arr) # 最小值 min_val = min(arr) # 和 sum_val = sum(arr) # 平均值 avg_val = sum_val / len(arr) # 输出结果 print("最大值:", max_val) print("最小值:", min_val) print("和:", sum_val) print("平均值:", avg_val) ``` 输出结果为: ``` 最大值: 9. 最小值: 1.2 和: 27. 平均值: 5.4 ``` ### 回答2: 要一个 float 数组最大值最小值、和、平均值,可以采用以下方法: 1. 最大值:遍历整个数组,找出数组中的最大值元素,时间复杂度为 O(n)。 2. 最小值:同样地,遍历整个数组,找出数组中的最小值元素,时间复杂度为 O(n)。 3. 数组和:遍历整个数组,将数组中的所有元素相加即可,时间复杂度为 O(n)。 4. 平均值:先计算出数组的总和,然后除以数组的长度即可得到数组平均值,时间复杂度为 O(n)。 具体的代码实现如下: ```python def array_ops(arr): max_val = float('-inf') min_val = float('inf') arr_sum = 0 arr_len = len(arr) for val in arr: #获取最大值 if val > max_val: max_val = val #获取最小值 if val < min_val: min_val = val #获取数组总和 arr_sum += val #计算平均值 arr_avg = arr_sum / arr_len #返回结果 return {"max_val": max_val, "min_val": min_val, "arr_sum": arr_sum, "arr_avg": arr_avg} ``` 以上即是一个 float 数组最大值最小值数组和、平均值的方法和代码实现。如果需要保留小数位数,可以使用 Python 的 Decimal 类型进行精确计算。 ### 回答3: 对于给定的一个float类型的数组,我们可以采取以下几种方法来最大最小值和、平均值。 1. 遍历数组,找出最大值最小值。这种方法简单但效率较低,需要遍历整个数组才能得到结果。 2. 使用Arrays类中的sort()方法对数组进行排序,然后取数组头和尾的元素即可得到最小值最大值。这种方法的效率比第一种要高,最好的情况下可以只遍历一半的数组元素。 3. 对数组进行遍历,累加每个元素的值,即可得到数组的总和。然后除以数组的长度就可以得到平均值。 4. Java 8中引入的流式API也可以轻松解决这个问题。使用流的max()和min()方法可以快速找到最大值最小值,使用sum()方法可以和,使用average()方法可以平均值。 示例代码如下: ``` float[] arr = {2.5f, 3.8f, 1.2f, 4.5f, 2.0f}; // 方法一:遍历最大最小值 float maxValue = Float.MIN_VALUE; float minValue = Float.MAX_VALUE; for (float num : arr) { if (num > maxValue) { maxValue = num; } if (num < minValue) { minValue = num; } } System.out.println("最大值为:" + maxValue); System.out.println("最小值为:" + minValue); // 方法二:排序最大最小值 Arrays.sort(arr); System.out.println("最小值为:" + arr[0]); System.out.println("最大值为:" + arr[arr.length - 1]); // 方法三:遍历和和平均值 float sum = 0f; for (float num : arr) { sum += num; } float average = sum / arr.length; System.out.println("数组总和为:" + sum); System.out.println("数组平均值为:" + average); // 方法四:使用流最大最小值和和平均值 float max = Arrays.stream(arr).max().getAsFloat(); float min = Arrays.stream(arr).min().getAsFloat(); float total = Arrays.stream(arr).sum(); float avg = (float) Arrays.stream(arr).average().getAsDouble(); System.out.println("最大值为:" + max); System.out.println("最小值为:" + min); System.out.println("数组总和为:" + total); System.out.println("数组平均值为:" + avg); ``` 无论采用哪种方法,最终都能出float数组最大值最小值、总和和平均值。需要注意的是,在处理数组时应该注意数据类型和边界情况,确保代码的正确性和鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王小王几点了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值