选择排序
首先在未排序的数组中找到最大/最小的元素,然后把这个元素放到已排序的末尾。以此类推,直到排完。
随着排序的进行,每次需要检查的元素数在逐渐减少,最后一次需要检查的元素都只有一个。
一图胜千言,黄色区域代表已排好,红色表现未排序中的最小值。
void selectionSort(int arr[], int n){
for(int i = 0 ; i < n ; i ++){
// find the minimum element in [i, n)
int minIndex = i;
for( int j = i + 1 ; j < n ; j ++ )
if( arr[j] < arr[minIndex] )
minIndex = j;
swap( arr[i] , arr[minIndex] );
}
}