Trong bài viết này, chúng ta sẽ tìm hiểu giải pháp cho bài toán sau:
Đề bài – Cho một mảng, cần sắp xếp dùng Gnome Sort.
Thuật toán
1. Duyệt mảng từ trái sang phải. 2. Nếu phần tử hiện tại >= phần tử trước, tiến 1 bước. 3. Ngược lại, nếu nhỏ hơn, đổi chỗ 2 phần tử và lùi 1 bước. 4. Lặp cho đến hết mảng.
Hãy quan sát giải pháp trong triển khai dưới đây:
Ví dụ
def gnomeSort(arr, n):
index = 0
while index < n:
if index == 0:
index = index + 1
if arr[index] >= arr[index - 1]:
index = index + 1
else:
arr[index], arr[index-1] = arr[index-1], arr[index]
index = index - 1
return arr
# main
arr = [1, 4, 2, 3, 6, 5, 8, 7]
n = len(arr)
arr = gnomeSort(arr, n)
print("Dãy đã sắp xếp:")
for i in arr:
print(i, end=" ")
Kết quả
Dãy đã sắp xếp: 1 2 3 4 5 6 7 7 8
Kết luận
Trong bài này, chúng ta đã học cách làm chương trình Python Gnome Sort.