#1,选择排序简介
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面),我个人认为,按照数值来讲,这两个5没差别,所以这是不是决定这个算法不稳定还有待商榷。
#2,c++实现算法
#include<iostream>
#include<vector>
using namespace std;
void SelectSort(vector<int> &A);
void Select(vector<int> &A, int start, int stop);
void swapv(int &a, int &b);
int main(){
vector<int> array = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 };
SelectSort(array);
system("Pause");
return 0;
}
void SelectSort(vector<int> &A){
int len=A.size();
for (int i = 0; i < len; i++)
Select(A,i,len-1);
}
void Select(vector<int> &A, int start, int stop){
int val=A[start];
int len=A.size();
int pos=0;
for (int i = start; i < stop + 1; i++)
if(A[i]<val){
pos=i;
val=A[i];
}
if(pos!=0)
swapv(A[start],A[pos]);
}
void swapv(int &a, int &b){
a=a+b;
b=a-b;
a=a-b;
}
#3,程序实现结果