You are on page 1of 18

Câu 1.

Anh/chị mô phỏng chạy từng bước thuật toán sắp xếp chọn trực tiếp với bộ dữ liệu sau (Chú ý: Không viết code)

90 68 72 32 55 21

B1: Dãy chưa sắp xếp là:

90 68 72 32 55 21

B2: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 21

90 68 72 32 55 [21]

B3: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp

[21] 68 72 32 55 90

B4: Xét dãy chưa sắp xếp là dãy không có phần tử có ngoặc [ ]

B5: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 32

[21] 68 72 [32] 55 90

B6: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp

[21] [32] 72 68 55 90

B7: Xét dãy chưa sắp xếp là dãy không có phần tử có ngoặc [ ]

B8: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 55

[21] [32] 72 68 [55] 90

B9: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp

[21] [32] [55] 68 72 90

B10: Xét dãy chưa sắp xếp là dãy không có phần tử có ngoặc [ ]

B11: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 68

[21] [32] [55] [68] 72 90

B12: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp, do đã ở đầu rồi nên không có sự t
[21] [32] [55] [68] 72 90

B13: Xét dãy chưa sắp xếp là dãy không có phần tử có ngoặc [ ]

B14: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 72

[21] [32] [55] [68] [72] 90

B15: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp, do đã ở đầu rồi nên không có sự t

[21] [32] [55] [68] [72] 90

B16: Xét dãy chưa sắp xếp là dãy không có phần tử có ngoặc [ ]

B17: Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp -> phần tử 90

[21] [32] [55] [68] [72] [90]

B18: Hoán vị phần tử nhỏ nhất với phần tử vị trí đầu của dãy chưa sắp xếp, do đã ở đầu rồi nên không có sự t

[21] [32] [55] [68] [72] [90]

=> dãy đã sắp xếp


au (Chú ý: Không viết code): Câu 2: Cho cấu trúc node và cấu trúc ngăn xếp (STACK) như sau:

* Anh/ chị hoàn thành hàm đưa một node vào ngăn xếp theo yêu cầu và gợi ý sa

void push(Stack& s, Node* p) {


p->next = s.top; // Gắn liên kết với đỉnh cũ của ngăn xếp
s.top = p; // Cập nhật đỉnh của ngăn xếp

Thuật toán tìm kiếm nhị phân được áp dụng khi:


+ Cần tìm kiếm nhanh chóng
+ Danh sách đã sắp xếp
+ Nếu dữ liệu được tổ chức trong một mảng, và bạn cần tìm kiếm một g
=> Áp dụng cho mảng được sắp xếp thứ tự

// Hàm tìm kiếm nhị phân trong bảng chưa sắp xếp
bool binarySearch(int mang[], int left, int right, int x) {
// Sắp xếp mảng trước khi thực hiện tìm kiếm nhị phân
sort(arr, arr + Size);

while (left <= right) {


int mid = left + (right - left) / 2;

// Nếu giá trị được tìm kiếm nằm ở giữa


if (arr[mid] == x) {
return true;
}

// Nếu giá trị được tìm kiếm nằm bên trái


else if (arr[mid] > x) {
right = mid - 1;
}
đã ở đầu rồi nên không có sự thay đổi
// Nếu giá trị được tìm kiếm nằm bên phải
else {
left = mid + 1;
}
}

// Nếu không tìm thấy


return false;
}
đã ở đầu rồi nên không có sự thay đổi

đã ở đầu rồi nên không có sự thay đổi


CK) như sau:

xếp theo yêu cầu và gợi ý sau:

ũ của ngăn xếp


Input:
+ Tree cay
+ float giaTri
Output:
+ bool timThayHayKhong

bool TimKiemCay(Tree& cay, int giaTri) {


stack<Node*> stack

Node* currentNode = goc;

while (currentNode != NULL || !stack.empty()) {


ng, và bạn cần tìm kiếm một giá trị cụ thể // Duyệt và đưa tất cả các node bên trái vào stack
while (currentNode != NULL) {
stack.push(currentNode);
currentNode = currentNode->left;
}
ếm nhị phân
// Lấy node từ stack và kiểm tra giá trị
currentNode = stack.top();
stack.pop();

if (currentNode->data == giaTri) {
return true; // Giá trị được tìm thấy
}

// Duyệt sang node bên phải


currentNode = currentNode->right;
}

currentNode = currentNode->right;
}
bên trái vào stack Kết quả: NULL (ko có data trong tail)

ntNode->left;

ị được tìm thấy

Kết quả: 9.3 In ra giá trị của phần tử đầu tiên của mảng
thông qua con trỏ a. Toán tử * được sử
dụng để lấy giá trị tại địa chỉ mà con trỏ
trỏ tới.
Kết quả: 39 giá trị của head vừa gán node có giá trị 39 vào
null tail chưa có giá trị gán nên vẫn null

Kết quả: 8 5 9 1 3 6

do giá trị thứ 3 của mảng là 8, chương trình duyệt tới phần tử a[8] = 6 thì ngưng
Kết quả: 2022

In ra giá trị mà con trỏ p trỏ đến, tức là giá trị của biến value.
Toán tử * được sử dụng để giải tham chiếu đến giá trị của đối
tượng mà con trỏ đang trỏ đến.
Kết quả: 79
79
null
(*p).data: Truy cập trường dữ liệu data của đối tượng mà con trỏ p đang
trỏ đến. Bạn sử dụng toán tử * để giải tham chiếu con trỏ và sau đó sử
dụng toán tử . để truy cập trường dữ liệu data.

You might also like