数组的常用算法

1.查询数组元素

  • 分析:
    先指定需要查找的元素 再 循环整个数组;当数组元素和需要查找的元素匹配时,记录对应的下标 [ 预先定义变量index让它的值为-1(可以保证当元素没有 发生匹配时,index记录的下标值为 数组在非法下标取值,表示没有找到) ]
 int index=-1;
  int[] array= {11,22,33,44,55};
  Scanner s=new Scanner(System.in);
  System.out.println("输入要查找的元素: ");
  int element=s.nextInt();
  for(int i=0;i<array.length;i++) {
   if(array[i]==element) {
    index=i;
    break;
   }
  }
   if(index!=-1) {
    System.out.println("元素在数组中的下标位置是 "+index);
   }else { //未找到元素
    System.out.println("数组中没有这个元素");
   }
 }

2.获取最值

  • 分析:
    ①求最大值:先假设数组的第一个元素为最大值max,循环数组的其他元素,拿max和数组的每一个元素比较,只要发现数组中的元素大于当前max的取值,将max的值替换,循环结束后max中存储的就是数组中的最大值.
    ②求最小值:先假设数组的第一个元素为最小值min,循环数组的其他元素,拿min和数组的每一个元素比较,只要发现数组中的元素小于当前min的取值,将min的值替换,循环结束后min中存储的就是数组中的最小值.
int[] array= {111,77,44,9,100,88,6,911,56,23};
  
  //最大值
  int max=array[0];
  for(int i=1;i<array.length;i++) {
   if(max<array[i]) {
    max=array[i];
   }
   //max=max<array[i] ? array[i]:max;
  }
  System.out.println(max);
  
  //最小值
  int min=array[0];
  for(int i=0;i<array.length;i++) {
   if(min>array[i]) {
    min=array[i];
   }
   //min=min>array[i] ? array[i]:min;
  }
  System.out.println(min);

3.数组逆序

  • 分析:
    在这里插入图片描述
public static void main(String[] args) {
  int[] array= {11,22,33,44,55,66,77};
  System.out.println("逆序前: ");
  for(int i=0;i<array.length;i++) {
   System.out.print(array[i]+" ");
  }
  System.out.println();
  int temp=0;
  for(int i=0;i<array.length/2;i++) {
   temp=array[i];
   array[i]=array[array.length-1-i];
   array[array.length-1-i]=temp;
  }
  System.out.println("逆序后: ");
  for(int i=0;i<array.length;i++) {
   System.out.print(array[i]+" ");
  }
 }

4.数组排序(冒泡排序)

  • 分析:
    在这里插入图片描述
int[] array= {11,6,10,44,2,88,1};
  int temp=0;
  for(int i=0;i<array.length-1;i++) { //冒泡次数[L-1]
  //[-1:要访问j+1,防止下标越界],[-i:每轮都有最值沉降下去]
   for(int j=0;j<array.length-1-i;j++) {
    if(array[j]>array[j+1]) {
     temp=array[j];
     array[j]=array[j+1];
     array[j+1]=temp;
    }
   }
  }
  for(int i=0;i<array.length;i++) {
   System.out.print(array[i]+" ");
  }

5.数组插入元素

  • 分析:
    在这里插入图片描述
public static int[] addElement(int[] old_arr,int index,int element) {
  int[] new_arr=new int[old_arr.length+1];
  for(int i=0;i<old_arr.length;i++) {
   if(i<index) { //平移
    new_arr[i]=old_arr[i];
   }
   if(i==index) { //数据插入,再数据斜移
    new_arr[i]=element;
    new_arr[i+1]=old_arr[i];
   }
   if(i>index) { //数据斜移
    new_arr[i+1]=old_arr[i];
   }
  }
  return new_arr;
 }

6.数组删除元素

  • 分析:
    在这里插入图片描述
public static int[] removeElement(int[] old_arr,int index) {
  int[] new_arr=new int[old_arr.length-1];
  for(int i=0;i<new_arr.length;i++) {
   if(i<index) {
    new_arr[i]=old_arr[i];
   }
   if(i>=index) {
    new_arr[i]=old_arr[i+1];
   }
  }
  return new_arr;
 }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值