在一个数组中,找出所有指定数据的下标位置

package test;

import java.util.Arrays;

public class Demo5 {
	public static void main(String[] args) {
		
		//在一个数组中,找出所有指定数据的下标位置 
		int[] arr = {1,2,3,2, 2,8,2,89,2};
		int count = 0;//计数器的思想
		//指定一个数据 2  以上的数组中的下标  ===》[1, 3, 5]
		//将找到下标存到数组中
		//声明一个空的数组
		int[] indexes = new int[arr.length];//[0,0,0,0,0,0]
		/**
		 * i=0 0<4 true if  2==arr[0] 2==1false i++
		 * i=1 1<4 true if 2==arr[1] 2==2 true  indexes[0] = 1  ==>indexes=[1,0,0,0] i++
		 * i=2 2<4 true if 2==arr[2] 2==3 false  i++
		 * i=3 3<4 true if 2==arr[3] 2==2true indexes[1] = 3===>index=[1,3,0,0] i++
		 * i=4 4<4 false 循环
		 */
		for (int i = 0; i < arr.length; i++) {
			if (2 == arr[i]) {
				indexes[count++] = i;
			}
		}
		//System.out.println(Arrays.toString(indexes));//[1,3,0,0]==>[1,3]
		
		//咱们再弄一个一个空的数组,这个数组的容量是  count
		//System.out.println(count);
		int[] newIndexes = new int[count];//[0,0]
		/**
		 * i=0 0<2  true newIndexes[0] = indexes[0]=>newIndexes[0]= 1==>[1,0] i++
		 * i=1 1<2 true  newIndexes[1] = indexes[1]=>newIndexes[1] = 3==>[1,3] i++
		 * i=2 2<2 false 循环结束
		 * newIndexes = {1,3}
		 */
		for (int i = 0; i < newIndexes.length; i++) {
			newIndexes[i] = indexes[i];
		}
		System.out.println(Arrays.toString(newIndexes));
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个实现该功能的 Python 代码: ```python def find_max_min(arr, start, end): """ 在数组 arr 的下标范围 [start, end] 中找出最大值和最小值 """ if start > end: return None, None if start == end: return arr[start], arr[start] else: mid = (start + end) // 2 left_max, left_min = find_max_min(arr, start, mid) right_max, right_min = find_max_min(arr, mid+1, end) return max(left_max, right_max), min(left_min, right_min) ``` 这个函数使用了分治法的思想,将数组分成左右两部分,分别递归求解左半部分和右半部分的最大值和最小值,然后将左右两部分的结果合并。具体来说,如果数组只有一个元素,那么它的最大值和最小值就是它本身;如果数组有多个元素,那么将数组分成左右两部分,分别递归求解左半部分和右半部分的最大值和最小值,然后将左右两部分的最大值和最小值分别取最大值和最小值即可。 使用该函数可以找出数组中任意一部分数据的最大值和最小值,只需要指定数组下标范围即可。例如,如果要找出数组 `a` 中下标从 2 到 5 的部分数据的最大值和最小值,可以这样调用函数: ```python a = [1, 3, 5, 2, 4, 6, 8, 7] max_val, min_val = find_max_min(a, 2, 5) print("max_val =", max_val) # 输出:max_val = 5 print("min_val =", min_val) # 输出:min_val = 2 ``` 这里的 `max_val` 和 `min_val` 分别是下标从 2 到 5 的部分数据的最大值和最小值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值