为什么学习 O(n2) 算法
- 它作为算法的基础,思路比较简单,编码简单易于实现;
- 特殊情况下,简单排序算法更有效 ;
- 简单排序算法思想能衍生出复杂的排序算法;
- 可以作为子过程,改进更为复杂的排序算法。
实现思路
其实现思路重点在于“选择”二字,选择的是什么呢?实际上从 i=0 开始遍历数组,然后在 [i+1,n) 中选择出最小的元素与第 i <script type="math/tex" id="MathJax-Element-102">i</script>个位置元素进行交换。
代码实现
#include <iostream>
#include <algorithm>
using namespace std;
void selectionSort(int arr[], int n){
for(int i = 0 ; i < n ; i ++){
// 寻找[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] );
}
}