排序算法

来源:互联网 发布:天猫魔盒用什么软件 编辑:程序博客网 时间:2024/06/08 09:47
#include <iostream>
#include<set>
using namespace std;
#define N 100
int main(int argc, char** argv) {
 int n;                 //输入需要进行排序的元素个数
 cin>>n;
 std::multiset<int> s1;           //定义一个集合,multiset类型的,此类型元素可以重复
 int a[N];                        //用于获取用户输入的元素
 int b[2];                         //b[2]用于存放最小值和最大值,每次取一最小一最大,集合删除此两个元素后,再取最小最大值,指导集合元素空
 int c[N];                         //用于存放排好序的元素
 int count=0;                  
 set<int>::iterator ii;             
 for(int i=0;i<n;i++){
  cin>>a[i];
 }
 for(int i=0;i<n;i++){            //开始插入元素,数组先获取,在插入到集合中
  s1.insert(a[i]);
 }
    for(ii=s1.begin();ii!=s1.end();ii++)
 cout<<(*ii)<<" ";
 b[0]=a[0];                      //b[0]初始化
 b[1]=a[0];                        //b[1]初始化
 while(s1.size()>0){               //判断集合元素非空
 for(ii=s1.begin();ii!=s1.end();ii++){
  if(b[0]>*ii){                  //比较大小,集合中的元素依次与b[0]做比较,小的放入b[0]
   b[0]=*ii;
  }
  if(b[1]<*ii){                    //比较大小,集合中的元素依次与b[1]做比较,大的放入b[0]
   b[1]=*ii;
  }
 }
 if(count<=n/2+1){
 c[count]=b[0];                     //将每次最小值从前往后赋给数组c
 c[n-count-1]=b[1];                     //将最大值从后往前赋给数组c
 count++;
  }
 s1.erase(b[0]);                       //删除选出来的最小值
 s1.erase(b[1]);                         //删除选出来的最大值
  }
 
 for(int i=0;i<n;i++){                  //输出排好序的数组c
  cout<<c[i]<<" ";
 }
 
 return 0;
}
0 0
原创粉丝点击