首页 > 代码库 > 八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)
八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)
基本思想:
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
简单选择排序的示例:
操作方法:
第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;
第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换;
以此类推.....
第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换,
直到整个序列按关键码有序。
算法实现:(杭电ACM 1040) 验证 结果AC啦
#include<iostream>using namespace std;const int N =1005;void sort(int a[],int num);void print(int a[],int num);void swap(int &a,int &b);int main(){ int s[N]; int T; cin>>T; while(T--) { int n; cin>>n; for(int j=0;j<n;j++) cin>>s[j]; sort(s,n); print(s,n); cout<<endl; } return 0;}void sort(int a[],int num)//选择排序代码 { for(int i=0;i<num;i++) { int k=i; for(int j=i+1;j<num;j++) { if(a[k]>a[j])//从剩下的元素选择一个最小的元素 k=j; } if(k!=i) { swap(a[k],a[i]);//与最小的元素进行交换 } } }void swap(int &a,int& b)//交换元素 { int temp; temp=a; a=b; b=temp;}void print(int a[],int n)//输出数组元素 { cout<<a[0]; for(int k=1;k<n;k++) { cout<<" "<<a[k]; }}
八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。