Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
4406 | 邓小龙 | 选择排序 | C++ | Accepted | 5 MS | 276 KB | 1387 | 2024-08-17 18:09:54 |
# include<iostream> using namespace std; int arr[2010],n,t;// //录入n个数的数组 //1.进行了几次比较,2.进行了几次交换 int cnt1,cnt2;//cnt1:比较的次数,cnt2:交换的次数 void input_arr(int n,int a[]){ for(int i=1;i<=n;i++){ cin>>a[i]; } } void sort1(int n, int a[]){ for(int i=1;i<=n-1;i++){ bool f=false;//代表没有进行交换过 for(int j=1;j<=n-i;j++)//上升还是下降 { cnt1++; if(a[j]>a[j+1]) {//<降序,>升序 swap(a[j],a[j+1]); cnt2++; f=true;//代表交换过了 } } if(f==false) break;//后面比较的轮次可以不进行 } } void print_arr(int n,int a[]){ for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; } //从小到大排序,那每一轮应该找最小值的位置 void sort_2(int n,int a[]){ int pos;//存最小值的位置 for(int i=1;i<=n-1;i++){ //默认当前这个位存的值就是最小值 pos=i; for(int j=i+1;j<=n;j++){ if(a[pos]>a[j]) pos=j;//找最小值的位置 } //交换i和pos位置的值 if(pos!=i)swap(a[i],a[pos]); } } int main(){ cin>>n; input_arr(n,arr); sort_2(n,arr); print_arr(n,arr); return 0; }