排序原理
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
这是不稳定的排序方法;
时间复杂度最好和最坏都是 O ( n 2 ) O(n^2) O(n2)
算法演示
初始序列:
第一步;
第二步:
第三步:
最后:
演示代码
#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAXSIZE 20
#define KeyType int
typedef struct{
KeyType key;
}RedType;
typedef struct{
RedType r[MAXSIZE+1];
int length;
}SqList;
int enter(SqList &L){
L.length=0;
cout<<"enter number :"<<endl;
for(int i=1;i<=10;i++){
cin>>L.r[i].key;
L.length++;
}
return 1;
}
void print(SqList L){
for(int i=1 ; i<=L.length ; i++)
cout<<L.r[i].key<<" ";
}
void SelectSort(SqList &L){
int i,j,k,t;
for(i=1;i<L.length;i++){
k=i;
for(j=1+i;j<L.length+1;j++)
if(L.r[j].key<L.r[k].key) k=j;
if(k!=i) {
t=L.r[i].key;
L.r[i].key=L.r[k].key;
L.r[k].key=t;
}
}
}
int main(){
SqList L;
enter(L);
print(L);
SelectSort(L);
cout<<endl<<"NEW:"<<endl;
print(L);
}