SelectionSort Nguyên tắc : Chia mảng cần sắp thành 2 phần Phần đã được sắp và phần chưa được sắp: <A = phần được sắp> < B= phần chưa được sắp> C = phần tử đầu tiên của B Bước 1 : Tìm trong B phần tử lớn nhất max_key Bước 2 : swap C và max_key ( hoán đổi vị trí ) Bước 3 : Bỏ max_key vào A . Khi này A mới = { A cũ , max_key } . Quay lại bước 1 Gọi Sortable_List là list được hiện thực bằng mảng Code: void Sortable_List<Record>::selectionsort() { for ( int position = count -1 ; position > 0 ; position -- ) { int max = max_key(0,position) ; // tìm key lớn nhất swap ( max , position ) ; } } void Sortable_List<Record>::swap ( int low , int high) { Record temp ; temp = entry[low] ; entry[low] = entry[high] ; entry[high] = temp ; } max_key(int low , int high) { int largest , current ; largest = low ; for ( current = low +1 ; current <= high ; current ++ ) if ( entry[largest] < entry[current] ) { largest = current ; } return largest ; } . Selection Sort Nguyên tắc : Chia mảng cần sắp thành 2 phần Phần đã được sắp và phần chưa được sắp : <A = phần được sắp& gt; < B= phần chưa được sắp& gt;. max_key } . Quay lại bước 1 Gọi Sortable_List là list được hiện thực bằng mảng Code: void Sortable_List<Record> ;:: selectionsort() { for ( int position