Mẫu phiếu đánh giá xếp loại viên chức cán bộ y tế cuối năm chuẩn nhấtGonHub » Kiến thức » Mẫu phiếu đánh giá xếp loại viên chức cán bộ...
Thuật toán tìm kiếm tuyến tính (Linear search)
Bài viết này được đăng tại
freetuts.net
Bạn đang đọc: Thuật toán tìm kiếm tuyến tính (Linear search)
, không được copy dưới mọi hình thức.
Đề bài: Cho một mảng
arr[]
gồmn
phần từ. Viết một hàm đưa ra vị trí của phần từx
trong mảng.Ví dụ:
Input : arr[] = {10, 20, 80, 30, 60, 50, 110, 100, 130, 170} x = 110; Output : 6Với đề bài này tất cả chúng ta hoàn toàn có thể giải bằng cách sử dụng thuật toán tìm kiếm tuyết tính được trình diễn sau đây .Bài viết này được đăng tại [ không lấy phí tuts. net ]
1. Tìm kiếm tuyến tính là gì?
Thuật toán tìm kiếm tuyến tính là phương pháp tìm kiếm một phần tử cho trước trong một danh sách bằng cách duyệt lần lượt từng phần từ của danh sách đó đến khi nào tìm được giá trị mong muốn hay đã duyệt hết qua hết danh sách.
Đây là một giải thuật khá đơn thuần để triển khai, nó rất tương thích khi cần tìm kiếm trên một list vửa đủ và chưa được sắp xếp. Trong trường hợp cần tìm kiếm với một list lớn hoặc nhiều lần tất cả chúng ta nên tìm một giải thuật khác hiệu suất cao hơn .
Thuật toán tìm kiếm tuyến tính rất hiếm khi được sử dụng bởi những thuật toán tìm kiếm khác như tìm kiếm nhị phân, bảng băm, .. được cho phép tìm kiếm nhanh hơn rất nhiều so với tìm kiếm tuyến tính .2. Ý tưởng
Thuật toán tìm kiêm tuyến tính là một thuật toán khá đơn giản. Sau đây là ý tưởng triển khai thuật toán.
- Bắt đầu từ bản ghi đầu tiên của mảng, duyệt từ đầu mảng đến cuối mảng với
x
.- Nếu phần tử đang duyệt bằng
x
thì trả về vị trí.- Nếu không tìm thấy bất cứ phần từ nào khi đã duyệt hết thì trả về
-1
.Trong trường hợp tốt nhất độ phức tạp của thuật toán này là
O(1)
, trường hơp xấu nhất làO(n)
, trung bình cũng làO(n)
.3. Triển khai thuật toán
Ở đây tất cả chúng ta sẽ tiến hành thuật bằng ngôn từ C + +, những bước tiến hành sẽ được đề cập bên dưới .
#includeusing namespace std; int linearSearch(int arr[], int n, int x){ //Lặp từng phần tử của mảng và kiểm tra. for(int i = 0; i < n; i++) if (arr[i] == x) return i; // Trả về -1 nếu đã duyệt hết mà ko tìm thấy. return -1; } int main() { int arr[] = {1, 5, 12, -10, 5, 11}; int x = -10; // Số phần có trong mảng. int n = sizeof(arr) / sizeof(arr[0]); int result = linearSearch(arr, n, x); if (result == -1) cout << "Khong tim thay " << x << " trong mang"; else cout << "Vi tri: " << result; }
Output: Vi tri 3
Bên trên là cách tiến hành đơn thuần nhất của thuật toán tìm kiếm tuyến tính. Đây cũng là một thuật toán hay được sử dụng cũng như rât hữu dụng trong quy trình giải những bài toán tìm kiếm. Rất mong bài viết sẽ có ích cho bạn !
Source: https://vh2.com.vn
Category : Đánh Giá