步骤:
- 将序列分成有序区和无序区,通过将无序区的数不断加入有序区并保持有序,完成排序
代码:
void SelectionSort(vector<int>& num){
int size = num.size();
int i, j;
int temp;
for (i = 1; i<size; i++){
j = i;
if (num[j] < num[j - 1])
{
temp = num[j];
while (j > 0 && temp < num[j - 1])
{
num[j] = num[j - 1];
j--;
}
num[j] = temp;
}
}
}
分析:
- 时间复杂度为O(n^2)
- 优于冒泡排序和选择排序