Cô giáo có danh sách tên các bạn trong lớp em. Theo em, danh sách đó có được sắp xếp theo thứ tự nào không? Vì sao cần sắp xếp tên trong danh sách như vậy?
Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Tên học sinh theo danh sách được xếp theo thứ tự bảng chữ cái.
def binary_search(names, target):
low = 0
high = len(names) - 1
while low <= high:
mid = (low + high) // 2
mid_name = names[mid]
if mid_name == target:
return mid
elif mid_name < target:
low = mid + 1
else:
high = mid - 1
return -1
# Danh sách tên học sinh trong lớp (đã được sắp xếp theo thứ tự bảng chữ cái)
class_names = ["An", "Bình", "Cường", "Đạt", "Hoàn", "Minh", "Nam", "Thảo", "Trung"]
# Tên học sinh cần tìm
target_name = "Minh"
# Gọi hàm tìm kiếm nhị phân
result = binary_search(class_names, target_name)
if result != -1:
print("Học sinh có tên là", target_name, "được tìm thấy tại vị trí", result)
else:
print("Học sinh có tên là", target_name, "không tồn tại trong danh sách.")
Số thứ tự | Họ và tên | Nam , nữ | Ngày sinh | Nơi ở |
---|---|---|---|---|
1. | Hoàng Minh Đức | Nam | 3-2-2009 | xã Phước Lợi, huyện Cần Giuộc, tỉnh Long An. |
2. | Nguyễn Thảo Mai | Nữ | 17-5-2009 | xã Phước Lợi, huyện Cần Giuộc, tỉnh Long An. |
3. | Nguyễn Thanh Tú | Nam | 3-3-2009 | xã Phước Lợi, huyện Cần Giuộc, tỉnh Long An. |
4. | Hoàng Ngọc Yến | Nữ | 17-8-2009 | xã Phước Lợi, huyện Cần Giuộc, tỉnh Long An. |
a) Danh sách học sinh của lớp:
def tim_vi_tri_ten_hs(ten, danh_sach_hs):
for i, ten_hs in enumerate(danh_sach_hs):
if ten_hs == ten:
return i
return -1
danh_sach_hs = ["Nam", "An", "Binh", "Chung", "Duc", "Huong"]
ten_can_tim = "An"
vi_tri = tim_vi_tri_ten_hs(ten_can_tim, danh_sach_hs)
if vi_tri >= 0:
print(f"Vi tri cua ten '{ten_can_tim}' trong danh sach la {vi_tri}")
else:
print(f"Ten '{ten_can_tim}' khong nam trong danh sach")
b) Danh sách tên các chủ tài khoản ngân hàng đã sắp xếp theo thứ tự bảng chữ cái:
def tim_vi_tri_ten_tk(ten, danh_sach_tk):
left, right = 0, len(danh_sach_tk) - 1
while left <= right:
mid = (left + right) // 2
if danh_sach_tk[mid] == ten:
return mid
elif danh_sach_tk[mid] < ten:
left = mid + 1
else:
right = mid - 1
return -1
danh_sach_tk = ["An", "Binh", "Duc", "Huong", "Nam"]
ten_can_tim = "Huong".upper()
vi_tri = tim_vi_tri_ten_tk(ten_can_tim, danh_sach_tk)
if vi_tri >= 0:
print(f"Vi tri cua ten '{ten_can_tim}' trong danh sach la {vi_tri}")
else:
print(f"Ten '{ten_can_tim}' khong nam trong danh sach")
Tham khảo:
- Cải biển hàm phandoanLomuto thành him phandoanlomuto_tuple để sắp các cặp (Tên, điểm môn học) theo thành phần điểm môn học.
- Trong him phandoanLomuto_tuple đảo chiều phép so sánh trong câu lệnh if từ "ca" thành "y" để sắp thứ tự giảm dần, đặt tên hàm mới là phanhoanLamuto_tuple_down.
- Dùng hàm phanhoanLamuto_tuple_down để cải biên quícksort thành hàm quickSort_tuple_down.
`-` Danh sách đó được sắp xếp theo thứ tự của bảng Alphabet (thứ tự các chữ).
`-` Cần sắp xếp tên trong danh sách như vậy để dễ dàng tìm kiếm, nhận dạng ra tên của các bạn nhanh hơn.
theo em, danh sách đó có được sắp xếp theo thứ tự bảng chữ cái, vì để dễ dàng nhớ được tên hơn, và dựa vào những chữ lần lượt trong bảng chữ cái để dễ nhận biết hơn