Trong khoa hoc may tinh va trong toan hoc, thuat toan sap xep la mot thuat toan sap xep cac phan tu cua mot danh sach (hoac mot mang) theo thu tu (tang hoac giam). Nguoi ta thuong xet truong hop cac phan tu can sap xep la cac so. Bai toan sap xep đa đuoc nhieu nha khoa hoc quan tam.


Phan loai thuat toan sap xep. = Sap xep on đinh =
Mot thuat toan sap xep đuoc goi la sap xep on đinh neu sau khi tien hanh sap xep vi tri tuong đoi giua cac phan tu bang nhau khong bi thay đoi.


= Sap xep so sanh =
Mot thuat toan sap xep đuoc goi la sap xep so sanh neu trong qua trinh thuc hien thuat toan ta tien hanh so sanh cac khoa va đoi cho cac phan tu cho nhau.
Đa so cac thuat toan sap xep duoi đay la sap xep so sanh, rieng sap xep đem phan phoi khong phai la sap xep so sanh.


Mot so thuat toan sap xep = Sap xep noi bot =

Sap xep noi bot (bubble sort) la phuong phap sap xep đon gian, de hieu thuong đuoc day trong khoa hoc may tinh. Giai thuat bat đau tu đau cua tap du lieu. No so sanh hai phan tu đau, neu phan tu đung truoc lon hon phan tu đung sau thi đoi cho chung cho nhau. Tiep tuc lam nhu vay voi cap phan tu tiep theo cho đen cuoi tap hop du lieu. Sau đo no quay lai voi hai phan tu đau cho đen khi khong con can phai đoi cho nua.


= Sap xep chen =

Sap xep chen (insertion sort) la thuat toan sap xep xu ly chen phan tu đang xet vao vi tri thich hop cua day so đa sap xep phia truoc sao cho day so van la day sap xep co thu tu.


= Sap xep chon =

Sap xep chon (selection sort) la phuong phap sap xep bang cach chon phan tu be nhat xep vao vi tri thu nhat, tuong tu voi cac phan tu nho thu hai, thu ba,...


= Sap xep tron =

Sap xep tron (merge sort) cung voi sap xep nhanh la hai thuat toan sap xep dua vao tu tuong "chia đe tri" (divide and conquer). Thu tuc co ban la viec tron hai danh sach đa đuoc sap xep vao mot danh sach moi theo thu tu. No co the bat đau tron bang cach so sanh hai phan tu mot (chang han phan tu thu nhat voi phan tu thu hai, sau đo thu ba voi thu tu...) va sau khi ket thuc buoc 1 no chuyen sang buoc 2. O buoc 2 no tron cac danh sach hai phan tu thanh cac danh sach bon phan tu. Cu nhu vay cho đen khi hai danh sach cuoi cung đuoc tron thanh mot.


= Sap xep vun đong =
Sap xep vun đong (heapsort) la mot trong cac phuong phap sap xep chon. O moi buoc cua sap xep chon ta chon phan tu lon nhat (hoac nho nhat) đat vao cuoi (hoac đau) danh sach, sau đo tiep tuc voi phan con lai cua danh sach. Thong thuong sap xep chon chay trong thoi gian O(n2). Nhung heapsort đa giam đo phuc tap nay bang cach su dung mot cau truc du lieu đac biet đuoc goi la đong (heap). Đong la cay nhi phan ma trong so o moi đinh cha lon hon hoac bang trong so cac đinh con cua no. Mot khi danh sach du lieu đa đuoc vun thanh đong, goc cua no la phan tu lon nhat, thuat toan se giai phong no khoi đong đe đat vao cuoi danh sach. Sap xep vun đong chay trong thoi gian O(n log n).


= Sap xep nhanh =
Sap xep nhanh (quicksort) la mot thuat toan theo tu tuong chia đe tri, no dua tren thu tuc phan chia nhu sau: đe chia mot day ta chon mot phan tu đuoc goi la "chot" (pivot), chuyen tat ca cac phan tu nho hon chot ve truoc chot, chuyen tat ca cac phan tu lon hon chot ve sau no(neu sap xep theo day theo thu tu tang dan), neu sap xep day theo thu tu giam dan ta chuyen tat ca cac phan tu nho hon chot ve ben phai chot va lon hon chot ve ben trai chot. Thu tuc nay co the thuc hien trong thoi gian tuyen tinh. Tiep tuc phan chia cac day con đo nhu tren cho đen khi cac day con chi con mot phan tu.
Điem khac biet giua sap xep nhanh va sap xep tron la trong sap xep tron viec xac đinh thu tu đuoc xac đinh khi "tron", tuc la trong khau tong hop loi giai sau khi cac bai toan con đa đuoc giai, con sap xep nhanh đa quan tam đen thu tu cac phan tu khi phan chia mot danh sach thanh hai danh sach con.
Ngoai ra con nhieu giai thuat sap xep khac, trong đo nhieu giai thuat sap xep đuoc cai tien tu cac giai thuat tren. Trong sau giai thuat liet ke tren, ta thuong coi cac giai thuat chen, chon, noi bot la cac giai thuat co ban, đo phuc tap trong truong hop trung binh cua chung la 
  
    
      
        O
        (
        
          n
          
            2
          
        
        )
      
    
    {\displaystyle O(n^{2})}
  
. Ba giai thuat con lai thuong đuoc coi la giai thuat cao cap, đo phuc tap tinh toan trung binh cua chung la 
  
    
      
        n
        .
        log
        ⁡
        n
      
    
    {\displaystyle n.\log n}
  
.


= Sap xep theo co so =
Sap xep theo co so (radix sort) dua tren tinh chat "so" cua cac khoa. Trong giai thuat sap xep theo co so, ta khong chi so sanh gia tri cua cac khoa, ma so sanh cac thanh phan cua khoa. Gia su cac khoa la cac so bieu dien theo he ghi so co so M. Khi đo sap xep theo co so se so sanh tung k
Chung ta mo ta cach sap nay khi co so M=10. Gia su phai sap cac ho so đanh so boi 3 chu so thap phan. Đau tien ta chia cac ho so vao cac đong co cung chu so hang tram (đong thoi xep cac đong theo thu tu cua chu so hang tram), trong moi đong con lai phan chia theo chu so hang chuc, cuoi cung trong moi đong co cung chu so hang tram va hang chuc, sap xep theo thu tu cua chu so hang đon vi.
Trong may tinh, đuong nhien viec sap xep theo co so nhi phan (co so 2) hoac co so la luy thua cua 2 la thuan loi nhat. Trong truong hop co so 2, viec phan hoach tuong tu nhu phan hoach trong Quick Sort, chi khac o cho cach chon phan tu chot.


= Sap xep đem phan phoi =
Sap xep đem phan phoi la phuong phap sap xep co đo phuc tap tuyen tinh trong truong hop cac khoa nhan huu han gia tri trong khoang cho truoc. Đe đon gian ta gia su cac phan tu cua danh sach 
  
    
      
        a
        [
        1..
        n
        ]
      
    
    {\displaystyle a[1..n]}
  
 nhan cac gia tri tu nhien trong khoang 
  
    
      
        [
        1..
        M
        ]
        .
      
    
    {\displaystyle [1..M].}
  

Sap xep đem phan phoi đau tien đem cac phan tu thuoc danh sach nhan gia tri k voi 
  
    
      
        1
        ≤
        k
        ≤
        M
      
    
    {\displaystyle 1\leq k\leq M}
  
. Cac gia tri đem đuoc ghi vao mang 
  
    
      
        C
        o
        u
        n
        t
        e
        r
        [
        1..
        M
        ]
      
    
    {\displaystyle Counter[1..M]}
  
. Sau đo khi duyet theo k tu 1 đen M, ta lan luot xep 
  
    
      
        C
        o
        u
        n
        t
        e
        r
        [
        k
        ]
      
    
    {\displaystyle Counter[k]}
  
 phan tu cua vao danh sach 
  
    
      
        a
        [
        1..
        n
        ]
      
    
    {\displaystyle a[1..n]}
  
.


= Shell Sort =
Shell sort la mot giai thuat sap xep mang lai hieu qua cao dua tren giai thuat sap xep chen (Insertion Sort). Giai thuat nay tranh đuoc cac truong hop phai trao đoi vi tri cua hai phan tu xa nhau trong giai thuat sap xep chon. (neu nhu phan tu nho hon o vi tri ben phai kha xa so voi phan tu lon hon o vi tri ben trai)


Tham khao