在Java中排序和搜索元素


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

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

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

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

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("The given unsorted list: ");
      // for each loop that prints the original array
      for (int print : araylist) {
         System.out.print(print + " ");
      } 
      Arrays.sort(araylist); 
      // method to sort given array
      System.out.println();
      System.out.print("The newly sorted list: ");
      // for each loop that prints the newly sorted array
      for (int print : araylist) {
         System.out.print(print + " ");
      } 
      System.out.println();
      // method to search given element
      int position = Arrays.binarySearch(araylist, 1);
      if(position > -1) {
         System.out.print("Element is available at index: " + position);
      } else {
         System.out.print("Element is not available");
      }
   }
} 

输出

The given unsorted list: 9 3 56 0 -2 -6 2 1 80 
The newly sorted list: -6 -2 0 1 2 3 9 56 80 
Element is available at index: 3

方法二:使用自定义逻辑

使用冒泡排序进行排序

算法

  • 步骤 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 + " ");
      }     
   }     
}

输出

The given unsorted list: 9 3 56 0 2 1 80 
The newly sorted list: 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");
      }
   }
}

输出

Element is available at index: 3

结论

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

更新于:2023年5月5日

2K+ 次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告