选择排序(Select Sort) 是直观的排序,通过确定一个 Key 最大或最小值,再从待排序的的数中(无序区)找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为 O(n^2)
算法描述:
代码实现:
cin>>n; for(int i=1;i<=n;++i) cin>>a[i]; for(int i=1;i<n;++i) //n-1趟,每趟从a[i]..a[n]中找最小的数和a[i]交换 { p=i; //p存储a[i]..a[n]中最小数的位置,先假定在i。 for(int j=i+1;j<=n;++j) //枚举a[i+1]..a[n] if(a[j]<a[p]) p=i; //打擂台更新最小数位置 swap(a[i],a[p]); }