Trong khoa học máy tính và trong toán học, thuật toán sắp xếp là một thuật toán sắp xếp các phần tử của một danh sách (hoặc một mảng) theo thứ tự (tăng hoặc giảm). Người ta thường xét trường hợp các phần tử cần sắp xếp là các số. Bài toán sắp xếp đã được nhiều nhà khoa học quan tâm.
Phân loại thuật toán sắp xếp.
Sắp xếp ổn định
Một thuật toán sắp xếp được gọi là sắp xếp ổn định nếu sau khi tiến hành sắp xếp vị trí tương đối giữa các phần tử bằng nhau không bị thay đổi.
Sắp xếp so sánh
Một thuật toán sắp xếp được gọi là sắp xếp so sánh nếu trong quá trình thực hiện thuật toán ta tiến hành so sánh các khoá và đổi chỗ các phần tử cho nhau.
Đa số các thuật toán sắp xếp dưới đây là sắp xếp so sánh, riêng sắp xếp đếm phân phối không phải là sắp xếp so sánh.
Một số thuật toán sắp xếp
Sắp xếp nổi bọt
Sắp xếp nổi bọt (bubble sort) là phương pháp sắp xếp đơn giản, dễ hiểu thường được dạy trong khoa học máy tính. Giải thuật bắt đầu từ đầu của tập dữ liệu. Nó so sánh hai phần tử đầu, nếu phần tử đứng trước lớn hơn phần tử đứng sau thì đổi chỗ chúng cho nhau. Tiếp tục làm như vậy với cặp phần tử tiếp theo cho đến cuối tập hợp dữ liệu. Sau đó nó quay lại với hai phần tử đầu cho đến khi không còn cần phải đổi chỗ nữa.
Sắp xếp chèn
Sắp xếp chèn (insertion sort) là thuật toán sắp xếp xử lý chèn phần tử đang xét vào vị trí thích hợp của dãy số đã sắp xếp phía trước sao cho dãy số vẫn là dãy sắp xếp có thứ tự.
Sắp xếp chọn
Sắp xếp chọn (selection sort) là phương pháp sắp xếp bằng cách chọn phần tử bé nhất xếp vào vị trí thứ nhất, tương tự với các phần tử nhỏ thứ hai, thứ ba,...
Sắp xếp trộn
Sắp xếp trộn (merge sort) cùng với sắp xếp nhanh là hai thuật toán sắp xếp dựa vào tư tưởng "chia để trị" (divide and conquer). Thủ tục cơ bản là việc trộn hai danh sách đã được sắp xếp vào một danh sách mới theo thứ tự. Nó có thể bắt đầu trộn bằng cách so sánh hai phần tử một (chẳng hạn phần tử thứ nhất với phần tử thứ hai, sau đó thứ ba với thứ tư...) và sau khi kết thúc bước 1 nó chuyển sang bước 2. Ở bước 2 nó trộn các danh sách hai phần tử thành các danh sách bốn phần tử. Cứ như vậy cho đến khi hai danh sách cuối cùng được trộn thành một.
Sắp xếp vun đống
Sắp xếp vun đống (heapsort) là một trong các phương pháp sắp xếp chọn. Ở mỗi bước của sắp xếp chọn ta chọn phần tử lớn nhất (hoặc nhỏ nhất) đặt vào cuối (hoặc đầu) danh sách, sau đó tiếp tục với phần còn lại của danh sách. Thông thường sắp xếp chọn chạy trong thời gian O(n2). Nhưng heapsort đã giảm độ phức tạp này bằng cách sử dụng một cấu trúc dữ liệu đặc biệt được gọi là đống (heap). Đống là cây nhị phân mà trọng số ở mỗi đỉnh cha lớn hơn hoặc bằng trọng số các đỉnh con của nó. Một khi danh sách dữ liệu đã được vun thành đống, gốc của nó là phần tử lớn nhất, thuật toán sẽ giải phóng nó khỏi đống để đặt vào cuối danh sách. Sắp xếp vun đống chạy trong thời gian O(n log n).
Sắp xếp nhanh
Sắp xếp nhanh (quicksort) là một thuật toán theo tư tưởng chia để trị, nó dựa trên thủ tục phân chia như sau: để chia một dãy ta chọn một phần tử được gọi là "chốt" (pivot), chuyển tất cả các phần tử nhỏ hơn chốt về trước chốt, chuyển tất cả các phần tử lớn hơn chốt về sau nó(nếu sắp xếp theo dãy theo thứ tự tăng dần), nếu sắp xếp dãy theo thứ tự giảm dần ta chuyển tất cả các phần tử nhỏ hơn chốt về bên phải chốt và lớn hơn chốt về bên trái chốt. Thủ tục này có thể thực hiện trong thời gian tuyến tính. Tiếp tục phân chia các dãy con đó như trên cho đến khi các dãy con chỉ còn một phần tử.
Điểm khác biệt giữa sắp xếp nhanh và sắp xếp trộn là trong sắp xếp trộn việc xác định thứ tự được xác định khi "trộn", tức là trong khâu tổng hợp lời giải sau khi các bài toán con đã được giải, còn sắp xếp nhanh đã quan tâm đến thứ tự các phần tử khi phân chia một danh sách thành hai danh sách con.
Ngoài ra còn nhiều giải thuật sắp xếp khác, trong đó nhiều giải thuật sắp xếp được cải tiến từ các giải thuật trên. Trong sau giải thuật liệt kê trên, ta thường coi các giải thuật chèn, chọn, nổi bọt là các giải thuật cơ bản, độ phức tạp trong trường hợp trung bình của chúng là . Ba giải thuật còn lại thường được coi là giải thuật cao cấp, độ phức tạp tính toán trung bình của chúng là .
Sắp xếp theo cơ số
Sắp xếp theo cơ số (radix sort) dựa trên tính chất "số" của các khóa. Trong giải thuật sắp xếp theo cơ số, ta không chỉ so sánh giá trị của các khóa, mà so sánh các thành phần của khóa. Giả sử các khóa là các số biểu diễn theo hệ ghi số cơ số M. Khi đó sắp xếp theo cơ số sẽ so sánh từng k
Chúng ta mô tả cách sắp này khi cơ số M=10. Giả sử phải sắp các hồ sơ đánh số bởi 3 chữ số thập phân. Đầu tiên ta chia các hồ sơ vào các đống có cùng chữ số hàng trăm (đồng thới xếp các đống theo thứ tự của chữ số hàng trăm), trong mỗi đống con lại phân chia theo chữ số hàng chục, cuối cùng trong mỗi đống có cùng chữ số hàng trăm và hàng chục, sắp xếp theo thứ tự của chữ số hàng đơn vị.
Trong máy tính, đương nhiên việc sắp xếp theo cơ số nhị phân (cơ số 2) hoặc cơ số là lũy thừa của 2 là thuận lợi nhất. Trong trường hợp cơ số 2, việc phân hoạch tương tự như phân hoạch trong Quick Sort, chỉ khác ở chỗ cách chọn phần tử chốt.
Sắp xếp đếm phân phối
Sắp xếp đếm phân phối là phương pháp sắp xếp có độ phức tạp tuyến tính trong trường hợp các khóa nhận hữu hạn giá trị trong khoảng cho trước. Để đơn giản ta giả sử các phần tử của danh sách nhận các giá trị tự nhiên trong khoảng
Sắp xếp đếm phân phối đầu tiên đếm các phần tử thuộc danh sách nhận giá trị k với . Các giá trị đếm được ghi vào mảng . Sau đó khi duyệt theo k từ 1 đến M, ta lần lượt xếp phần tử của vào danh sách .
Shell Sort
Shell sort là một giải thuật sắp xếp mang lại hiệu quả cao dựa trên giải thuật sắp xếp chèn (Insertion Sort). Giải thuật này tránh được các trường hợp phải tráo đổi vị trí của hai phần tử xa nhau trong giải thuật sắp xếp chọn. (nếu như phần tử nhỏ hơn ở vị trí bên phải khá xa so với phần tử lớn hơn ở vị trí bên trái)
👁️
0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong khoa học máy tính và trong toán học, **thuật toán sắp xếp** là một thuật toán sắp xếp các phần tử của một danh sách (hoặc một mảng) theo thứ tự (tăng hoặc giảm).
Trong khoa học máy tính, **sắp xếp trộn** (_merge sort_) là một thuật toán sắp xếp để sắp xếp các danh sách (hoặc bất kỳ cấu trúc dữ liệu nào có thể truy cập tuần
Trong khoa học máy tính, thuật toán **sắp xếp theo cơ số** là một thuật toán sắp xếp không so sánh. Thuật toán này được thực hiện dựa trên ý tưởng nếu một dãy số
Trong khoa học máy tính, **thứ tự tô pô** của một đồ thị có hướng là một thứ tự sắp xếp của các đỉnh sao cho với mọi cung từ _u_ đến _v_ trong đồ
liên_kết=https://en.wikipedia.org/wiki/File:Bubble-sort-example-300px.gif|nhỏ|300x300px|**Một ví dụ về sắp xếp nổi bọt. Bắt đầu từ vị trí đầu tiên của danh sách (bên trái), so sánh các cặp số với nhau, nếu không đúng thứ tự nhỏ-lớn thì đảo
**Sắp xếp nhanh** (_Quicksort_), còn được gọi là sắp xếp kiểu phân chia (_part sort_) là một thuật toán sắp xếp phát triển bởi C.A.R. Hoarec sắp thành hai danh sách con. Khác với sắp
**Sắp xếp chèn** (_insertion sort_) là một thuật toán sắp xếp bắt chước cách sắp xếp quân bài của những người chơi bài. Muốn sắp một bộ bài theo trật tự người chơi bài rút
**Sắp xếp chọn** là một thuật toán sắp xếp đơn giản, dựa trên việc so sánh tại chỗ. Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị
nhỏ|Mô phỏng thuật toán sắp xếp vun đống|403x403px **Sắp xếp vun đống** (_Heapsort_) dựa trên một cấu trúc dữ liệu được gọi là đống nhị phân (_binary heap_), gọi đơn giản là đống. Trong mục
**Sắp xếp đếm phân phối** là một phương pháp sắp xếp có độ phức tạp tuyến tính. Nó dựa trên giả thiết rằng, các khoá cần sắp xếp là các số tự nhiên giới hạn
Bài viết này là **danh sách các thuật toán** cùng một mô tả ngắn cho mỗi thuật toán. ## Thuật toán tổ hợp ### Thuật toán tổ hợp tổng quát * Thuật toán Brent: tìm
Trong khoa học máy tính, **chia để trị** là một mô hình thiết kế thuật toán quan trọng dựa trên đệ quy với nhiều phân nhánh. Thuật toán chia để trị hoạt động bằng cách
nhỏ| Để tìm kiếm một mục đã cho trong một danh sách theo thứ tự nhất định, có thể sử dụng cả thuật toán [[Tìm kiếm tuần tự|tìm kiếm nhị phân và tuyến tính (bỏ
**Thuật toán tìm kiếm Grover** là một thuật toán lượng tử dùng trong việc tìm kiếm trên một cơ sở dữ liệu chưa sắp xếp gồm N phần tử trong độ phức tạp về thời
Bài này nói về từ điển các chủ đề trong toán học. ## 0-9 * -0 * 0 * 6174 ## A * AES * ARCH * ARMA * Ada Lovelace * Adrien-Marie Legendre *
Trong ngành khoa học máy tính, một **giải thuật tìm kiếm** là một thuật toán lấy đầu vào là một bài toán và trả về kết quả là một lời giải cho bài toán đó,
**Thuật toán Kruskal** là một thuật toán trong lý thuyết đồ thị để tìm cây bao trùm nhỏ nhất của một đồ thị liên thông vô hướng có trọng số. Nói cách khác, nó tìm
nhỏ|250x250px| Vòng tròn đồng tâm ma thuật của Yang Hui – số trên mỗi vòng tròn và đường kính (bỏ qua đường giữa 9) tổng cộng là 138 **Vòng tròn ma thuật** được phát minh
Ví dụ về một bài toán xếp ba lô giới hạn 1 chiều: chọn các hộp nào để tổng giá trị các hộp trong ba lô là lớn nhất mà tổng khối lượng dưới 15 kg?
thumb|Tarjan's Algorithm Animation **Thuật Toán Tarjan** (được đặt theo tên của người tìm ra nó - Robert Tarjan) là một thuật toán trong lý thuyết đồ thị dùng để tìm thành phần liên thông mạnh
**Thuật toán Dijkstra**, mang tên của nhà khoa học máy tính người Hà Lan Edsger Dijkstra vào năm 1956 và ấn bản năm 1959, là một thuật toán giải quyết bài toán đường đi ngắn
** Thuật toán so khớp chuỗi Knuth–Morris–Pratt** (hay **thuật toán KMP**) tìm kiếm sự xuất hiện của một "từ" W
trong một "xâu văn bản" S
bằng cách tiếp tục quá trình tìm kiếm khi
Toán học trong nghệ thuật: Bản khắc trên tấm đồng mang tên _[[Melencolia I_ (1514) của Albrecht Dürer. Những yếu tố liên quan đến toán học bao gồm com-pa đại diện cho hình học, hình
Trong đồ thị này, đường đi rộng nhất từ Maldon tới Feering có chiều rộng 29, và đi qua Clacton, Tiptree, Harwich, và Blaxhall. **Bài toán đường đi rộng nhất**, còn gọi là **bài toán
GIƠI THIÊU SACH NHÂP MÔN THUÂT TOAN Cuốn sách này được viết hướng đến người đọc là giáo viên và học sinh từ cấp THCS lớp 8 trở lên theo nội dung lõi của định
Trong khoa học máy tính, **tìm kiếm nhị phân** (), còn gọi là **tìm kiếm nửa khoảng** (_half-interval search_), **tìm kiếm logarit** (_logarithmic search_), hay **chặt nhị phân** (_binary chop_), là một thuật toán tìm
**Trượt băng nghệ thuật** (tiếng Anh: _figure skating_) là môn thể thao trong đó các cá nhân, đôi hoặc nhóm biểu diễn bằng giày trượt băng trên sân băng. Đây là môn thể thao mùa
right|thumb|upright=1.35|alt=Graph showing a logarithmic curve, crossing the _x_-axis at _x_= 1 and approaching minus infinity along the _y_-axis.|[[Đồ thị của hàm số|Đồ thị của hàm logarit cơ số 2 cắt trục hoành tại và đi
thumb|[[Vincent van Gogh, tháng 7 năm 1890, _Đồng lúa và những con quạ_.]] **Tâm lý học mỹ thuật** là một lĩnh vực liên ngành nghiên cứu về quan niệm, nhận thức và đặc điểm của
**Đài Truyền hình Kỹ thuật số VTC**, còn gọi là **Đài Truyền hình Kỹ thuật số Việt Nam**, gọi tắt là **VTC** hay **Đài VTC**, là một đài truyền hình thành viên của Đài
**Toán học tổ hợp** (hay **giải tích tổ hợp**, **đại số tổ hợp**, **lý thuyết tổ hợp**) là một ngành toán học rời rạc, nghiên cứu về các cấu hình kết hợp các phần tử
thumb|Máy hơi nước là đầu tàu chính của cuộc [[cách mạng công nghiệp, đánh dấu tầm quan trọng của kỹ thuật trong lịch sử hiện đại.]] **Kỹ thuật**, hay là **ngành kỹ sư**, là việc
nhỏ|phải|Thai tạng giới [[Mạn-đà-la ()]] nhỏ|phải|Vòng Pháp luân **Nghệ thuật Phật giáo** là sự phản ánh các khái niệm trong đạo Phật dưới các hình thức nghệ thuật khác nhau – nhất là các lĩnh
Khay Đựng Mứt, Bánh Kẹo, Hoa Quả Phong Cách Hàn Quốc 5 Ngăn Bằng Nhựa Lúa Mạch An Toàn Sức Khoẻ * Khay đựng mứt, bánh kẹo, hoa quả phong cách Hàn Quốc với 5
**John von Neumann** (**Neumann János**; 28 tháng 12 năm 1903 – 8 tháng 2 năm 1957) là một nhà toán học người Mỹ gốc Hungary và là một nhà bác học thông thạo nhiều lĩnh
[[Siêu máy tính song song hàng loạt Blue Gene/P của IBM]] **Tính toán song song** (tiếng Anh: _Parallel computing_), là một hình thức tính toán trong đó nhiều phép tính và tiến trình được thực
nhỏ| [[Viện bảo tàng Louvre|Bảo tàng Louvre ở Paris, Pháp, là bảo tàng nghệ thuật được ghé thăm nhiều nhất trên thế giới vào năm 2018.]] nhỏ|[[Bảo tàng nghệ thuật quốc gia Hoa Kỳ tại
**Địa chất kĩ thuật** là ứng dụng của Địa chất học - là môn khoa học nghiên cứu về các vật chất rắn và lỏng cấu tạo nên Trái Đất, đúng ra là nghiên cứu
**Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh** (tiếng Anh: _Ho Chi Minh City University of Technology and Education_) là một trường đại học đa ngành tại Việt Nam, với thế
Lưu ý: Danh sách **thuật ngữ lý thuyết đồ thị** này chỉ là điểm khởi đầu cho những người mới nhập môn làm quen với một số thuật ngữ và khái niệm cơ bản. Bài
Một **công dân kỹ thuật số** () là người có kỹ năng sử dụng công nghệ thông tin để giao tiếp với người khác, tham gia vào các hoạt động xã hội, kinh doanh và
Trong khoa học máy tính, **A*** (đọc là _A sao_) là thuật toán tìm kiếm trong đồ thị. Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho
Trong ngành khoa học máy tính, **quy hoạch động** (tiếng Anh: _dynamic programming_) là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con
_Cuốn [[The Compendious Book on Calculation by Completion and Balancing_]] Từ _toán học_ có nghĩa là "khoa học, tri thức hoặc học tập". Ngày nay, thuật ngữ "toán học" chỉ một bộ phận cụ thể
Mỗi chiếc dây lưng nam công sở cao cấp da nguyên miếng đều mang vẻ đẹp riêng biệt và ấn tượng. Sản phẩm được làm từ chất liệu da bò cao cấp loại 1, chất
Mỗi chiếc dây lưng nam công sở cao cấp da nguyên miếng đều mang vẻ đẹp riêng biệt và ấn tượng. Sản phẩm được làm từ chất liệu da bò cao cấp loại 1, chất
Mỗi chiếc dây lưng nam công sở cao cấp da nguyên miếng đều mang vẻ đẹp riêng biệt và ấn tượng. Sản phẩm được làm từ chất liệu da bò cao cấp loại 1, chất
Mỗi chiếc dây lưng nam công sở cao cấp da nguyên miếng đều mang vẻ đẹp riêng biệt và ấn tượng. Sản phẩm được làm từ chất liệu da bò cao cấp loại 1, chất
Mỗi chiếc dây lưng nam công sở cao cấp da nguyên miếng đều mang vẻ đẹp riêng biệt và ấn tượng. Sản phẩm được làm từ chất liệu da bò cao cấp loại 1, chất
Các nhà hoạt động xã hội và nghệ sĩ tham gia các cuộc biểu tình ở Hồng Kông năm 2019 – 2020 đã sử dụng tác phẩm nghệ thuật, hội họa, âm nhạc và các