- vừa được xem lúc

Data Structure & Algorithm - Sort Algorithms - Selection Sort

0 0 4

Người đăng: Thái Thanh Hải

Theo Viblo Asia

Selection Sort là gì?

Selection Sort là một thuật toán sắp xếp đơn giản. Thuật toán này hoạt động bằng cách lặp lại qua mảng và chọn phần tử nhỏ nhất (hoặc lớn nhất, tùy thuộc vào yêu cầu) từ phần chưa được sắp xếp và trao đổi nó với phần tử đầu tiên của phần chưa được sắp xếp. Quy trình này được lặp lại cho đến khi không cần thiết phải trao đổi nữa, tức là mảng đã được sắp xếp.

Cụ thể, quy trình của Selection Sort bao gồm các bước sau:

  1. Chọn phần tử nhỏ nhất (hoặc lớn nhất) từ phần chưa được sắp xếp.
  2. Trao đổi phần tử đã chọn với phần tử đầu tiên của phần chưa được sắp xếp.
  3. Lặp lại các bước 1 và 2 cho đến khi không cần thiết phải trao đổi nữa

Selection Sort có những ưu điểm và nhược điểm riêng:

Ưu điểm:

  • Đơn giản: Selection Sort rất đơn giản và dễ hiểu
  • Ổn định: Selection Sort là một thuật toán sắp xếp ổn định, nghĩa là nó duy trì thứ tự tương đối của các phần tử bằng nhau
  • Không yêu cầu bộ nhớ bổ sung: Selection Sort là một thuật toán sắp xếp ở chỗ, nghĩa là nó không yêu cầu bộ nhớ bổ sung để lưu trữ dữ liệu đã được sắp xếp

Nhược điểm:

  • Không hiệu quả: Selection Sort không phù hợp với các tập dữ liệu lớn vì độ phức tạp thời gian trung bình và tồi tệ là O(n^2), nơi n là số lượng phần tử trong mảng

Selection Sort hoạt động như thế nào?

Giả sử chúng ta có một mảng sau: 64, 25, 12, 22, 11

Bước 1: Chọn phần tử nhỏ nhất từ phần chưa được sắp xếp, trong trường hợp này là 11.

Bước 2: Trao đổi phần tử đã chọn với phần tử đầu tiên của phần chưa được sắp xếp: 11, 25, 12, 22, 64

Bước 3: Chọn phần tử nhỏ nhất từ phần chưa được sắp xếp, trong trường hợp này là 12.

Bước 4: Trao đổi phần tử đã chọn với phần tử đầu tiên của phần chưa được sắp xếp: 11, 12, 25, 22, 64

Lặp lại các bước 1 đến 4 cho đến khi không cần thiết phải trao đổi nữa: 11, 12, 22, 25, 64

Vậy, mảng ban đầu 64, 25, 12, 22, 11 đã được sắp xếp thành 11, 12, 22, 25, 64 Source 3.

Cách cài đặt Selection Sort

function selectionSort(arr) { let len = arr.length; for (let i = 0; i < len; i++) { let minIndex = i; for (let j = i+1; j < len; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // Swap elements if (minIndex !== i) { let tmp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = tmp; } } return arr;
}

Ứng dụng của Selection Sort

Thuật toán Selection Sort có một số ứng dụng:

  1. Mục đích giáo dục: Selection Sort được sử dụng rộng rãi trong giáo dục khoa học máy tính như một công cụ giảng dạy để giúp sinh viên hiểu được khái niệm về thuật toán sắp xếp.
  2. Kiểm tra và gỡ lỗi cho các thuật toán sắp xếp khác: Selection Sort có thể được sử dụng để kiểm tra và gỡ lỗi cho các thuật toán sắp xếp khác bằng cách phục vụ như một điểm tham chiếu đơn giản và trực tiếp.
  3. Trong đồ họa máy tính: Selection Sort phổ biến vì khả năng của nó phát hiện một lỗi nhỏ (như việc trao đổi chỉ hai phần tử) trong các mảng gần như đã được sắp xếp và sửa chúng với chỉ độ phức tạp tuyến tính (2n)
  4. Trong thuật toán điền đa giác: Selection Sort được sử dụng trong thuật toán điền đa giác, nơi các đường ranh giới được sắp xếp theo tọa độ x của chúng ở một dòng quét cụ thể (một đường song song với trục x), và với việc tăng dần y, thứ tự của chúng chỉ thay đổi (chỉ hai phần tử được trao đổi) tại các giao điểm của hai đường.

Nguồn tham khảo:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tài nguyên nghiên cứu sâu Html

1. Articles and standards. . HTML 5.

0 0 183

- vừa được xem lúc

Embedded Template in Go

Getting Start. Part of developing a web application usually revolves around working with HTML as user interface.

0 0 40

- vừa được xem lúc

Full Stack Developer Roadmap 2021

Cách để trở thành một Full Stack Web Developer trên thế giới hiện nay. Các công ty đang luôn săn đón những developer có nhiều kĩ năng để cung cấp cho họ sự linh hoạt trong các dự án.

0 0 26

- vừa được xem lúc

Những kiến thức hay về Gradient: Gradient đẹp nhất chỉ được tìm thấy ở ngoài thiên nhiên!

. Quen thuộc từ lâu với rất nhiều người, nền Gradient chỉ là những bức nền với 2 hay nhiều dải màu sắc được hòa trộn với nhau. Đơn giản là vậy, nhưng càng ngày Gradient càng phổ biến hơn trong thiết kế Website ngày nay.

0 0 288

- vừa được xem lúc

What Is Session Fixation?

Session Fixation là một kỹ thuật tấn công web. Kẻ tấn công lừa người dùng sử dụng session ID đặc biệt.

0 0 33

- vừa được xem lúc

Làm thế nào để Design của Website thu hút hơn?

Xin chào các bạn. Bởi thế, không phải bàn cãi, thiết kế giao diện vừa thu hút, vừa chuyên nghiệp và ấn tượng là một trong những yếu tố quan trọng nhất trong cả quá trình phát triển 1 website.

0 0 23