在 Java 中用其对应的排名替换数组元素

javaobject oriented programmingprogramming更新于 2024/11/27 20:28:17

在 Java 中,数组是一个对象。它是一种非原始数据类型,用于存储类似数据类型的值。

根据问题陈述,我们给出了一个包含一些随机整数值的数组,并且必须用它们对应的排名替换这些元素。因此,我们必须首先按升序对给定的数组进行排序以找到排名。找到排名后,我们只需将这些排名值替换为它们各自的数组元素即可。

让我们探索这篇文章,看看如何使用 Java 编程语言来实现这一点。

向您展示一些实例

实例 1

给定数组 = [12,23,34,45,15]。
按升序对给定数组进行排序= [12,15,23,34,45]
因此,如果我们用相应数组的元素替换元素,我们得到 = [1, 3, 4, 5, 2]

实例-2

给定数组= [38,94,86,63,36]。
按升序对给定数组进行排序= [36,38,63,86,94]
因此,如果我们用相应数组的元素替换元素,我们得到 = [2, 5, 4, 3, 1]

实例-3

给定数组= [54,67,23,95,24]。
按升序对给定数组进行排序= [23,24,54,67,95]
因此,如果我们用相应数组的元素替换元素,我们将得到 = [3, 4, 1, 5, 2]

算法:

  • 步骤 1 - 声明一个数组并用一些随机整数值初始化它。

  • 步骤 2 - 声明另一个数组,它是一个临时数组,并存储输入数组的复制元素。

  • 步骤 3 - 按升序对临时数组进行排序,以便我们获得排名。

  • 步骤 4 - 采用嵌套 for 循环将排名与给定数组中相应的数组元素进行比较,并将排名存储在先前的位置值。

  • 步骤 5 - 获取替换等级的整个数组后,将该数组打印为输出。

语法

要获取数组的长度(该数组中的元素数),数组有一个内置属性,即 length。

下面引用它的语法 -

array. length

其中,"array"是指数组引用。

您可以使用 Arrays.sort() 方法按升序对数组进行排序。

Arrays.sort(array_name);

您可以使用 Arrays.copyOfRange() 方法复制数组的元素。

Arrays.copyOfRange(array_name, 0, array_name.length);

多种方法

我们提供了不同方法的解决方案。

  • 通过使用嵌套 for 循环

  • 通过使用用户哈希映射

让我们逐一查看程序及其输出。

方法 1:通过使用嵌套 for 循环方法

在这种方法中,我们声明一个包含一些随机整数值的数组,并使用嵌套 for 循环方法;我们用其相应的等级替换数组元素,并将该数组打印为输出。

示例

import java.util.*;
public class Main {
   public static void main(String[] args) {
      
    // 声明一个整数类型的数组,并通过静态输入方法将一些随机值存储到其中
    int[] inputArray = { 122, 34, 25, 67 , 87};
    
    // 调用用户定义的方法并传递 inputArray[]
    rankedArray(inputArray);
    
    // 将数组打印为输出
    System.out.println("Array with replaced ranked = " + Arrays.toString(inputArray));
   }
   //用户定义的方法,用给定数组的元素的等级替换它们
   static void rankedArray(int[] inpArr) {
        // 声明一个临时数组并存储输入数组的复制数组
        int temp[] = Arrays.copyOfRange(inpArr, 0, inpArr.length);
        // 按升序对 temp[] 数组的值进行排序 Arrays.sort(temp);
        // 启动嵌套循环以查找给定数组的相应位置
      	for(int i=0; i< inpArr.length; i++){
         for(int j=0; j< inpArr.length; j++){
            if(temp[j]==inpArr[i]){
               inpArr[i] = j+1;
               break;
            }
         }
      }
   }
}

输出

替换等级后的数组 = [5, 2, 1, 3, 4]

方法 2:使用 Hashmap

在此方法中,我们声明一个包含一些随机整数值的数组,并使用哈希映射方法;我们用数组元素的相应等级替换它们,并将该数组打印为输出。

示例

import java.util.*;
public class Main {
   public static void main(String[] args) {
      
    // 声明并初始化整数类型数组
    int[] inputArray = { 34,53,12,64,76};
    
    // 调用用户定义的方法
    rankedArray(inputArray);
    
    // 将数组打印为输出
    System.out.println("Array with replaced ranked = " +
    Arrays.toString(inputArray));
   }
   
   //用户定义的方法,用给定数组的元素的等级替换它们
   static void rankedArray(int[] inpArr) {
   
    // 声明一个临时数组并存储复制的输入数组
    int temp[] = Arrays.copyOfRange(inpArr, 0, inpArr.length);
    
    // 按升序对 temp[] 数组进行排序
    Arrays.sort(temp);
    
    // 创建 HashMap 类的对象来存储数组元素的映射排名
    Map hashRanks = new HashMap<>();
    
    //声明一个整数来存储数组元素对应排名的值
    int oppositeRank = 1;
    
    //启动循环
    for (int i = 0; i < temp.length; i++) {
         
        //声明一个整数来存储数组的元素
        int num = temp[i];
        
        // 更新数组元素的对应等级
        if (hashRanks.get(num) == null) {
            hashRanks.put(num, oppositeRank);
            oppositeRank++;
        }
      }
      
      // 将相应的等级分配给数组的元素
      for (int i = 0; i < inpArr.length; i++) {
         int num = inpArr[i];
         inpArr[i] = (int)hashRanks.get(inpArr[i]);
      }
   }
}

输出

Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Array with replaced ranks = [2, 3, 1, 4, 5]

在本文中,我们探讨了如何使用 Java 编程语言将数组元素中任何元素的最后一位数字为 6 时替换为 -6。


相关文章


有用资源