Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 7

NHÓM 1:

SELECTION SORT
TABLE OF
CONTENTS

I. Ý tưởng giải thuật

II. Ví dụ minh hoạ giải thuật

III. Biểu diễn giải thuật

IV. Đánh giá độ phức tạp

V. Code ptit

2
I. Ý TƯỞNG GIẢI THUẬT

Giải thuật sắp xếp chọn (Selection Sort) là một giải thuật đơn giản. Giải thuật sắp xếp này là một giải thuật
dựa trên việc so sánh in-place, trong đó danh sách được chia thành hai phần, phần được sắp xếp (sorted list)
ở bên trái và phần chưa được sắp xếp (unsorted list) ở bên phải. Ban đầu, phần được sắp xếp là trống và
phần chưa được sắp xếp là toàn bộ danh sách ban đầu.

Phần tử nhỏ nhất được lựa chọn từ mảng chưa được sắp xếp và được tráo đổi với phần bên trái nhất và phần
tử đó trở thành phần tử của mảng được sắp xếp. Tiến trình này tiếp tục cho tới khi toàn bộ từng phần tử trong
mảng chưa được sắp xếp đều được di chuyển sang mảng đã được sắp xếp.
II. VÍ DỤ MINH HOẠ GIẢI THUẬT

[5, 2, 8, 12, 1]
Bước 1: Tìm phần tử nhỏ nhất trong danh sách và đặt nó vào vị trí đầu tiên. Trong trường
hợp này, số nhỏ nhất là 1, nên ta hoán đổi nó với số ở vị trí đầu tiên.Danh sách sau bước này:
[1, 2, 8, 12, 5]
Bước 2: Tìm phần tử nhỏ nhì trong danh sách (từ vị trí thứ hai trở đi) và đặt nó vào vị trí thứ
hai. Số nhỏ nhì là 2, nên ta hoán đổi nó với số ở vị trí thứ hai.Danh sách sau bước này: [1, 2,
8, 12, 5]
Bước 3: Tiếp tục tìm phần tử nhỏ nhì trong danh sách (từ vị trí thứ ba trở đi) và đặt nó vào vị
trí thứ ba. Số nhỏ nhì là 5, nên ta hoán đổi nó với số ở vị trí thứ ba.Danh sách sau bước này:
[1, 2, 5, 12, 8]
Bước 4: Tiếp tục tìm phần tử nhỏ nhì trong danh sách (từ vị trí thứ tư trở đi) và đặt nó vào vị
trí thứ tư. Số nhỏ nhì là 8, nên ta hoán đổi nó với số ở vị trí thứ tư.Danh sách sau bước này:
[1, 2, 5, 8, 12]
Bước 5: Quá trình hoán đổi đã hoàn thành, và danh sách đã được sắp xếp theo thứ tự tăng
dần: [1, 2, 5, 8, 12]
III. BIỂU DIỄN GIẢI THUẬT
IV. ĐÁNH GIÁ ĐỘ PHỨC TẠP

Tốt nhất: Trường hợp tốt nhất xảy ra khi danh sách đầu vào đã được sắp xếp hoặc gần như sắp xếp. Trong
trường hợp này, thuật toán vẫn phải duyệt qua toàn bộ mảng để tìm kiếm phần tử nhỏ nhất trong mỗi vòng
lặp, nhưng không cần thực hiện bất kỳ hoán đổi nào. Do đó, số lần so sánh là nhỏ nhất trong các trường hợp
và là n - 1, với n là số phần tử trong danh sách. Số lần hoán đổi sẽ là 0. Vì vậy, mức độ phức tạp tốt nhất của
giải thuật sắp xếp kiểu lựa chọn là O(n).

Trung bình: Trường hợp trung bình xảy ra khi danh sách đầu vào là ngẫu nhiên. Trong trường hợp này, số lần
so sánh và hoán đổi sẽ tương đối cao, và cả hai đều tăng theo cấp số nhân. Mức độ phức tạp trung bình của
giải thuật sắp xếp kiểu lựa chọn là O(n^2) cho cả số lần so sánh và số lần hoán đổi.

Xấu nhất: Trường hợp xấu nhất xảy ra khi danh sách đầu vào đã được sắp xếp theo thứ tự ngược lại (giảm
dần). Trong trường hợp này, số lần so sánh vẫn là O(n^2) nhưng số lần hoán đổi là tối đa. Cụ thể, số lần hoán
đổi sẽ bằng n - 1 với mỗi vòng lặp, tức là có tổng cộng (n - 1) + (n - 2) + ... + 1 lần hoán đổi, tương đương
với n(n - 1)/2. Do đó, mức độ phức tạp xấu nhất của giải thuật sắp xếp kiểu lựa chọn là O(n^2) cho số lần so
sánh và O(n^2) cho số lần hoán đổi.
V. CODE PTIT
int main() {
int T;
cin >> T;
while (T--) {
int n;
#include <bits/stdc++.h>
cin >> n;
using namespace std;
int arr[n];
for (int i = 0; i < n; i++) {
void selectionSort(int arr[], int n) {
cin >> arr[i];
for (int i = 0; i < n - 1; i++) {
}
int minIndex = i;
selectionSort(arr, n);
for (int j = i + 1; j < n; j++) {
for (int i = 0; i < n; i++) {
if (arr[j] < arr[minIndex]) {
cout << arr[i] << " ";
minIndex = j;
}
}
cout << endl;
}
}
swap(arr[i],arr[minIndex]);
}
return 0;
}
}

You might also like