选择排序(日志14)
1.工作原理
选择排序( Selection sort)是一种简单直观的排序算法。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2. 算法步骤
- (1)首先从原始数组中选择最小(最大)的1个数据,将其和位于第1个位置的数据交换。
- (2)接着从剩下的n-1个数据中选择次小(次大)的1个元素,将其和第2个位置的数据交换
- (3)然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大(从大到小)的排序。
3.动图演示
4.代码实现
#include<iostream> using namespace std; int main() { int a[] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; int temp; for(int i=0;i<15;i++) { temp = i; for(int j=i+1;j<15;j++) { if(a[temp]>a[j]) { temp = j; } } if(temp!=i) { swap(a[i], a[temp]); } } for(int i=0;i<15;i++) { cout << a[i] << " "; } return 0; }
5.稳定性
选择排序是不稳定的排序,因其在排序过程中,会改变原本元素的相对位置。
以5 7 5 3 9 为例,若采用从小到大的排序,首先会对3和第一个位置的5进行交换位置,那在交换位置后,它和原来的5的相对位置就发生了转变,使得前5变成了后5,所以这种排序是不稳定的。