Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức Array.LastIndexOf() trong C#

Phương thức Array.LastIndexOf() trong C# được dùng để tìm kiếm một đối tượng chỉ định và trả về chỉ mục của lần xuất hiện cuối cùng trong toàn bộ mảng một chiều.

Cú pháp

public static int LastIndexOf(Array array, object value);
  • array: Mảng một chiều cần tìm kiếm.
  • value: Đối tượng cần xác định vị trí trong mảng.

Trả về: Chỉ mục từ 0 của lần xuất hiện cuối cùng; trả về -1 nếu không tìm thấy.

Ví dụ 1: Tìm chỉ mục cuối cùng trong mảng chuỗi

using System;

public class Demo
{
    public static void Main()
    {
        string[] strArr = { "John", "Tim", "Fedric", "Gary", "Harry", "Damien", "David", "Harry" };

        // Sắp xếp mảng trước khi dùng BinarySearch
        Array.Sort(strArr);

        Console.WriteLine("Các phần tử mảng...");
        foreach (string s in strArr)
        {
            Console.WriteLine(s);
        }

        // BinarySearch yêu cầu mảng đã sắp xếp
        Console.Write("Chỉ mục của 'Gary' = " + Array.BinarySearch(strArr, "Gary"));
        Console.Write("\nChỉ mục của 'Tom' = " + Array.BinarySearch(strArr, "Tom"));

        // LastIndexOf không yêu cầu mảng đã sắp xếp
        Console.Write("\nChỉ mục cuối cùng của 'Harry' = " + Array.LastIndexOf(strArr, "Harry"));
    }
}

Kết quả

Các phần tử mảng...
Damien
David
Fedric
Gary
Harry
Harry
John
Tim
Chỉ mục của 'Gary' = 3
Chỉ mục của 'Tom' = -9
Chỉ mục cuối cùng của 'Harry' = 5

Ví dụ 2: Tìm trong mảng số nguyên

using System;

public class Demo
{
    public static void Main()
    {
        int[] intArr = { 5, 10, 15, 20, 15, 25, 30 };

        Array.Sort(intArr);

        Console.WriteLine("Các phần tử mảng...");
        foreach (int i in intArr)
        {
            Console.WriteLine(i);
        }

        Console.Write("Chỉ mục của 25 (BinarySearch) = " + Array.BinarySearch(intArr, 20));
        Console.Write("\nChỉ mục cuối cùng của 15 = " + Array.LastIndexOf(intArr, 15));
        Console.Write("\nChỉ mục cuối cùng của 50 = " + Array.LastIndexOf(intArr, 50));
    }
}

Kết quả

Các phần tử mảng...
5
10
15
15
20
25
30
Chỉ mục của 25 (BinarySearch) = 4
Chỉ mục cuối cùng của 15 = 3
Chỉ mục cuối cùng của 50 = -1

Các nạp chồng khác

  • LastIndexOf(Array, Object, Int32): Tìm từ chỉ mục chỉ định về phía đầu.
  • LastIndexOf(Array, Object, Int32, Int32): Tìm trong phạm vi chỉ định.
  • LastIndexOf<T>(T[], T): Phiên bản generic an toàn kiểu.

Lưu ý quan trọng

  • LastIndexOf thực hiện tìm kiếm tuyến tính (O(n)), không yêu cầu mảng đã sắp xếp.
  • BinarySearch nhanh hơn (O(log n)) nhưng bắt buộc mảng đã được sắp xếp.
  • Trả về -1 nếu không tìm thấy (khác với ngoại lệ).