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> < B= phân chưa được săp>
C = phản tử đầu tiên của B
Bước I : 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 |
Goi Sortable List 1a list được hiện thực băng mang
Code:
void Sortable_List<Record>::selectionsort()
{
for ( int position = count -1 ; position > 0 ; position )
{
int max = max_key(0,position) ; // tim key lén nhat swap ( max, position ) ;
}
}
void Sortable_ List<Record>::swap ( imnt low., int hiph)
{
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 ;