选择排序法
选择排序法(selection sort) 的基本思想是第i趟选择排序通过n-i次关键码的比 较,从n-i+1个记录中选出关键码最小的记录,并和第i个记录进行交换。
设由A[1]~A[n]的n个数据,选择排序的过程可以描述为:
①首先在A[1]~A[n]区间内进行比较,从n个记录中选出最小的记录A[k],若 k不为1则将A[1]和A[k]交换,A[1]为具有最小关键码的元素,称第1趟排序结束。
②然后在A[i]~A[n]区间内,进行第i趟排序,从n-i+1个记录中选出最小的记 录A[k],若k不为i则将A[i]和A[k]交换。重复进行n-1趟后,整个排序过程结束。

图例:

#include <iostream>
#include <stdlib.h>
#include<ctime>
#define N 10
using namespace std;
void selectsort(int A[],int n){
int t,k;
for(int i=0;i<n-1;i++){
k=i;
for(int j=1+i;j<n;j++){
if(A[j]<A[k])k=j; // <升序, >降序
if(i!=k) t=A[i],A[i]=A[k],A[k]=t; //找到最小的数字并交换
}
}
}
int main(){
int A[N],i;
srand((unsigned int )time(0));
for(i=0;i<N;i++){//随机生成一个10个的100以内的数字作为数组A
A[i]=rand()%100;
cout<<A[i]<<" ";
}
selectsort(A,N);//选择排序
cout<<endl;
for(i=0;i<N;i++)cout<<A[i]<<" "; //输出
}
结果:

复杂度:0(n²)
稳定性:不稳定
本文详细介绍了选择排序法的基本思想和实现过程,并提供了C++代码示例。选择排序通过n-i次关键码的比较从n-i+1个记录中选出关键码最小的记录,与第i个记录进行交换,重复进行n-1趟完成排序。

67

被折叠的 条评论
为什么被折叠?



