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

📅  最后修改于: 2022-05-13 01:54:38.613000             🧑  作者: Mango

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

在Java中对数组中的元素进行排序和搜索非常容易。与 C 不同,我们必须让所有的函数都能工作,而Java有内置函数来完成同样的工作。要对数组进行排序,有一个 sort函数,要在已排序的数组中搜索元素,有一个 binarySearch()函数。要了解有关这些功能的更多信息,请参阅以下文章:

排序: Java中的 Arrays.sort() 示例

时间复杂度: O (n log n)

排序语法:

Arrays.sort(array_name);

搜索: Java中的 Arrays.binarySearch() 示例

使用二进制搜索数组必须事先排序

要点:

  • 如果输入数组未排序,则结果未定义且为负数。
  • 如果有重复,则无法保证会找到哪一个。

时间复杂度: O (log n)

二分查找的语法:

Arrays.binarySearch(array_name, key);

我们总是可以创建用户定义的函数,但是Java中的内置函数已经使用了最简单的算法,因此没有必要创建这样的函数。

示例 1:在已排序数组中查找元素。

Java
// Java program to find an 
// element in an sorted array
  
// Importing util files
import java.util.*;
  
public class Gfg {
  
    // Main function
    public static void main(String args[]) throws Exception
    {
  
        // Sorted Array
        int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  
        // Using binarySearch to search for desired element
        int index = Arrays.binarySearch(array, 2);
  
        // Printing result
        if (index >= 0)
            System.out.println("Element 2 found at index: "
                               + index);
        else
            System.out.println("Element not found");
    }
}


Java
// Java program for Sorting an array and
// searching for an element in the 
// sorted array
  
// Importing util files
import java.util.*;
  
public class Gfg {
  
    // Main function
    public static void main(String args[]) throws Exception
    {
  
        // Unsorted Array
        int array[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
  
        // Sorting the array
        Arrays.sort(array);
  
        // Printing sorted array
        System.out.println("Sorted Array:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
  
        // Using binarySearch to search for desired element
        int index = Arrays.binarySearch(array, 0);
  
        // Printing result
        if (index >= 0)
            System.out.println("Element 2 found at index: "
                               + index);
        else
            System.out.println("Element not found");
    }
}


输出:

Element 2 found at index: 1

示例 2:对数组进行排序并在排序后的数组中搜索元素。

Java

// Java program for Sorting an array and
// searching for an element in the 
// sorted array
  
// Importing util files
import java.util.*;
  
public class Gfg {
  
    // Main function
    public static void main(String args[]) throws Exception
    {
  
        // Unsorted Array
        int array[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
  
        // Sorting the array
        Arrays.sort(array);
  
        // Printing sorted array
        System.out.println("Sorted Array:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
  
        // Using binarySearch to search for desired element
        int index = Arrays.binarySearch(array, 0);
  
        // Printing result
        if (index >= 0)
            System.out.println("Element 2 found at index: "
                               + index);
        else
            System.out.println("Element not found");
    }
}

输出:

Sorted Array:
1 2 3 4 5 6 7 8 9 10 
Element 2 found at index: 1