算法思想:如果有N个元素需要排序,那么首先从N个元素中找到最小的那个放在第0个位置上(交换位置),然后再从剩下的N-1个元素找到最小的放到第1个位置上,然后再从剩下的N-2个元素中找到最小的放到第2个位置上…直到所有元素都就位。
C++实现
#include <iostream>
#include <cstring>
using namespace std;
void SelectionSort(int a[],int size){
for (int i=0;i<size-1;i++){
int tmpmin=i;
for (int j=i+1;j<size;j++){
if (a[j]<a[tmpmin]) tmpmin=j;
}
int tmp=a[i];
a[i]=a[tmpmin];
a[tmpmin]=tmp;
}
}
void Print(int a[],int size){
for (int i=0;i<size-1;i++){
printf("%d ",a[i]);
}
}
int main(){
int a[]={4,3,2,6,1};
SelectionSort(a,5);
Print(a,5);
算法复杂度:O(n)= n 2 n^2 n2
python实现
def SelectSort(a,size):
for i in range(size-1):
tmpmin=i
for j in range(i+1,size):
if a[j]<a[tmpmin]:
tmpmin=j
tmp=a[i]
a[i]=a[tmpmin]
a[tmpmin]=tmp
return a
a=list(map(int,input().split(" "))) #输入:4 1 2
a_sort=SelectSort(a,int(len(a)))
print(a_sort) #输出:[1,2,4]
动图参考如下链接:
https://www.cnblogs.com/onepixel/articles/7674659.html