在 Java 中对元素进行排序和搜索

javaobject oriented programmingprogramming

排序和搜索是我们可以在数组上执行的基本操作。排序意味着按升序或降序重新排列给定列表或数组的元素,而搜索意味着在列表中查找元素或其索引。

虽然有各种算法可以执行这些操作,但在本文中,我们将使用其中的一些算法在 Java 中对元素进行排序和搜索。我们将逐一介绍它们。

方法 1:使用数组的内置方法

在本节中,我们将讨论以下有助于对数组中的元素进行排序和搜索的方法。

sort() - 它是 Arrays 类的静态方法,按升序对作为参数传递的数组进行排序。

语法

Arrays.sort(nameOfarray);

binarySearch() - 它也是 Arrays 类的静态方法。它接受两个参数,第一个是需要搜索其元素的数组,第二个是我们需要在该数组中找到的元素。

它返回作为参数传递的元素的索引号。

语法

Arrays.binarySearch(nameOfarray, element);

示例

import java.util.*;
public class Srch {
   public static void main(String args[]) {
        int araylist[] = {9, 3, 56, 0, -2, -6, 2, 1, 80};
        System.out.print("给定的未排序列表:");
        // 每次循环打印原始数组
        for (int print : araylist) {
            System.out.print(print + " ");
        }
        Arrays.sort(araylist);
        // 对给定数组进行排序的方法
        System.out.println();
        System.out.print("新排序的列表:");
        // 每次循环打印新排序的数组
        for (int print : araylist) {
            System.out.print(print + " ");
        }
        System.out.println();
            // 搜索给定元素的方法
            int position = Arrays.binarySearch(araylist, 1);
            if(position > -1) {
            System.out.print("元素在索引处可用:" + position);
        } else {
            System.out.print("元素不可用");
        }
   }
} 

输出

给定的未排序列表:9 3 56 0 -2 -6 2 1 80
新排序的列表:-6 -2 0 1 2 3 9 56 80
元素在索引处可用:3

方法 2:使用我们的自定义逻辑

使用冒泡排序进行排序

算法

  • 步骤 1 - 首先,声明并初始化一个名为"araylist"的数组和一个名为"temp"的整数变量以临时存储移位元素。

  • 步骤 2 - 进行两个 for 循环以将第 i 个位置元素与第 i + 1 个元素进行比较。在第二个 for 循环中创建一个 if 块来检查哪个元素更大,然后我们执行移位操作以按升序重新排列这些元素。

  • 步骤 3 - 现在使用 for each 循环我们将打印排序后的数组。

示例

public class Bubble {
   public static void main(String[] args) {
      int araylist[] = {9, 3, 56, 0, 2, 1, 80};
      int temp = 0; 
      System.out.print("The given unsorted list: ");
      for (int print : araylist) {
         System.out.print(print + " ");
      }   
      for (int i = 0; i < araylist.length; i++) {     
         for (int j = i+1; j < araylist.length; j++) {     
            if(araylist[i] > araylist[j]) {    
               temp = araylist[i];    
               araylist[i] = araylist[j];    
               araylist[j] = temp;    
            }     
         }     
      }
      System.out.println();
      System.out.print("The newly sorted list: ");
      for (int print : araylist) {
         System.out.print(print + " ");
      }     
   }     
}

输出

给定的未排序列表:9 3 56 0 2 1 80
新排序的列表:0 1 2 3 9 56 80

使用线性搜索进行搜索

算法

  • 步骤 1 - 首先,声明并初始化一个名为"araylist"的数组和一个名为"searchElem"的整数变量,我们将在数组中搜索它们。我们还需要两个整数变量"isFound"和"locate"。

  • 步骤 2 - 现在,创建一个 for 循环,该循环将运行到数组的长度。在此循环中,采用 if 块来检查"searchElem"是否存在于数组中。如果可用,则将其索引存储在变量"locate"中,并将变量"isFound"递增为 1。

  • 步骤 3 - 接下来,我们创建一个 if else 块来检查变量"isFound"是否递增为 1。如果等于 1,则表示找到了元素,我们将返回索引。如果不是,则将执行 else 块中的语句。

示例

public class Linear {
   public static void main(String[] args) {
      int araylist[] = {9, 3, 56, 0, 2, 1, 80};
      int searchElem = 0;
      int isFound = 0;
      int locate = 0;
      for(int i = 0; i < araylist.length; i++) {
         if(searchElem == araylist[i]) {
            isFound = 1;
            locate = i;
         } 
      }
      if(isFound == 1) {
         System.out.print("Element is available at index: " + locate);
      } else {
         System.out.print("Element is not available");
      }
   }
}

输出

元素在索引处可用:3

结论

在本文中,我们讨论了如何对数组元素进行排序并执行搜索操作以查找该数组的特定元素。我们可以使用名为"sort()"的内置方法或任何排序和搜索算法。


相关文章