选择排序
基本思想:
选择排序算法采用的方法比较直观:通过在待排序子表中完整地比较一遍以确定最大(小)元素,并将元素放在子表的最前(后)面。
时间复杂度: O(n*2)
稳定性分析:该算法是不稳定排序,因为关键字相同的元素在排序过程中可能会交换次序。例如,对数据表(3,3,2)排序时,由于要将第一个3与2交换而导致两个3之间的换位。
#include <iostream>
using namespace std;
void exchange(int &a,int &b){
int c;
c = a;
a = b;
b = c;
}
void select_sort(int *A,int length){
for(int i=0;i<length-1;i++){
int min = i; //最小元素的下表
for(int j = i+1;j<length;j++){
if(A[j] < A[min])
min = j;
}
exchange(A[min],A[i]);
}
}
int main(){
int A[] = {2,1,3,7,4,5,9,6,8};
int length = sizeof(A)/sizeof(int);
select_sort(A,length);
for(int i=0;i<length;i++){
cout<<A[i]<<" ";
}
return 0;
}
选择排序的图形化表示: