LH Quảng cáo: lazijsc@gmail.com

Bài tập  /  Bài đang cần trả lời

Cho dãy số: 15, 2, 34, 21, 38, 19, 52.- Dùng thuật toán tìm kiếm tuần tự tìm số 21- Dùng thuật toán tìm kiếm nhị phân tìm số 19- Hãy dùng thuật toán nổi bột để sắp xếp dãy số trên.- Hãy dùng thuật toán chọn để sắp xếp dãy số trên giải chi tiết giúp ..

Cho dãy số: 15, 2, 34, 21, 38, 19, 52.

- Dùng thuật toán tìm kiếm tuần tự tìm số 21

- Dùng thuật toán tìm kiếm nhị phân tìm số 19

- Hãy dùng thuật toán nổi bột để sắp xếp dãy số trên.

- Hãy dùng thuật toán chọn để sắp xếp dãy số trên
giải chi tiết giúp với ạ

1 trả lời
Hỏi chi tiết
116
Tham khảo câu trả lời từ Trợ lý ảo Lazi

Tìm kiếm tuần tự:


Bước 1: Bắt đầu từ phần tử đầu tiên của dãy số


Bước 2: So sánh phần tử hiện tại với số cần tìm (21)


Bước 3: Nếu phần tử hiện tại bằng số cần tìm, kết thúc tìm kiếm


Bước 4: Nếu không, chuyển sang phần tử tiếp theo và lặp lại bước 2


Bước 5: Nếu duyệt hết dãy số mà không tìm thấy số cần tìm, thông báo không tìm thấy



Tìm kiếm nhị phân:


Bước 1: Sắp xếp dãy số theo thứ tự tăng dần


Bước 2: Chia dãy số thành 2 phần, lấy phần giữa làm điểm chính giữa


Bước 3: So sánh số ở điểm chính giữa với số cần tìm (19)


Bước 4: Nếu số ở điểm chính giữa bằng số cần tìm, kết thúc tìm kiếm


Bước 5: Nếu số ở điểm chính giữa lớn hơn số cần tìm, chia nhỏ dãy số bằng cách loại bỏ phần lớn hơn và lặp lại từ bước 2


Bước 6: Nếu số ở điểm chính giữa nhỏ hơn số cần tìm, chia nhỏ dãy số bằng cách loại bỏ phần nhỏ hơn và lặp lại từ bước 2


Bước 7: Nếu duyệt hết dãy số mà không tìm thấy số cần tìm, thông báo không tìm thấy



Sắp xếp dãy số bằng thuật toán nổi bọt:


Bước 1: Duyệt qua từng phần tử của dãy số


Bước 2: So sánh phần tử hiện tại với phần tử kế tiếp, nếu phần tử hiện tại lớn hơn phần tử kế tiếp, hoán đổi vị trí của hai phần tử đó


Bước 3: Lặp lại quá trình trên cho đến khi không còn phần tử nào cần hoán đổi



Sắp xếp dãy số bằng thuật toán chọn:


Bước 1: Duyệt qua từng phần tử của dãy số


Bước 2: Chọn phần tử nhỏ nhất trong dãy số chưa được sắp xếp và đổi chỗ với phần tử đầu tiên của dãy số chưa được sắp xếp


Bước 3: Lặp lại quá trình trên cho đến khi không còn phần tử nào cần sắp xếp

1
0
Hưngg
23/04 13:44:04
+5đ tặng
#include <iostream>
#include <algorithm>

// Thuật toán tìm kiếm tuần tự
int linearSearch(int arr[], int size, int target) {
    for (int i = 0; i < size; ++i) {
        if (arr[i] == target) {
            return i; // Trả về chỉ số của số cần tìm
        }
    }
    return -1; // Trả về -1 nếu không tìm thấy
}

// Thuật toán tìm kiếm nhị phân
int binarySearch(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == target) {
            return mid; // Trả về chỉ số của số cần tìm
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1; // Trả về -1 nếu không tìm thấy
}

// Thuật toán nổi bọt để sắp xếp
void bubbleSort(int arr[], int size) {
    for (int i = 0; i < size-1; ++i) {
        for (int j = 0; j < size-i-1; ++j) {
            if (arr[j] > arr[j+1]) {
                std::swap(arr[j], arr[j+1]);
            }
        }
    }
}

// Thuật toán chọn để sắp xếp
void selectionSort(int arr[], int size) {
    for (int i = 0; i < size-1; ++i) {
        int min_idx = i;
        for (int j = i+1; j < size; ++j) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        std::swap(arr[i], arr[min_idx]);
    }
}

int main() {
    int numbers[] = {15, 2, 34, 21, 38, 19, 52};
    int size = sizeof(numbers) / sizeof(numbers[0]);

    // Tìm số 21 bằng thuật toán tìm kiếm tuần tự
    int index_21_linear = linearSearch(numbers, size, 21);
    if (index_21_linear != -1) {
        std::cout << "21 ở vị trí" << index_21_linear << " bằng tìm kiếm tuần tự.\n";
    } else {
        std::cout << "21 không tìm thấy.\n";
    }

    // Tìm số 19 bằng thuật toán tìm kiếm nhị phân
    int index_19_binary = binarySearch(numbers, size, 19);
    if (index_19_binary != -1) {
        std::cout << "19 ở vị trí " << index_19_binary << " tìm kiếm nhị phân\n";
    } else {
        std::cout << "19 không tìm thấy.\n";
    }

    // Sắp xếp dãy số bằng thuật toán nổi bọt
    bubbleSort(numbers, size);
    std::cout << "Sắp xếp nổi bọt";
    for (int i = 0; i < size; ++i) {
        std::cout << " " << numbers[i];
    }
    std::cout << "\n";

    // Sắp xếp dãy số bằng thuật toán chọn
    selectionSort(numbers, size);
    std::cout << "Sắp xếp chọn:";
    for (int i = 0; i < size; ++i) {
        std::cout << " " << numbers[i];
    }
    std::cout << "\n";

    return 0;
}
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Gia sư Lazi Gia sư