sort函数 使用于杭电1106

sort函数
/**
  
  **/
sort()函数定义在头文件<algorithm>中,它把容器中的数据重新排序成非递减序列。我们之所以用非递减而不用递增是因为,容器中的某些数据元素可能会与其他元素相等。
double x;
vector<double> numbers;
typedef vector<double>::size_type vec_size;
vec_sz size = numbers.size();

while(cin >> x)
    numbers.push_back(x);
sort(numbers.begin(), numbers.end());
//sort函数巧妙地完成了任务,它仅仅调换了原容器中元素值的相对顺序,而不是创建一个新的容器来存储排序后的结果。

//排序后求中数
vec_sz mid = size/2;
double median;
median = size % 2 == 0 ? (numbers[mid] + numbers[mid-1])/2 : numbers[mid];

//如果不希望改变向量本身,就可以通过函数参数的方式调用它
//调用函数时整个vector参数都会被复制
double median(vector<double> vec)
{
    sort(vec.begin(), vec.end());
    return 
}


原帖:点击打开链接


以下是1106的很简洁的代码:


#include<iostream>
#include<algorithm>
using namespace std;
#include<stdio.h>
#include<string.h>
int  main()
{
   char ch[1010];
   int i,k,length;
   while(scanf("%s",ch)!=EOF)
   {
       length=strlen(ch);ch[length]='5';ch[length+1]='\0';
       i=k=0;int num[1010]={0,0,0};
       for(i=0;;i++)
       {
           if(ch[i]!='5'&&ch[i]!='\0')
               num[k]=num[k]*10+(ch[i]-48);
           if(ch[i]!='5'&&ch[i+1]=='5') k++;
           if(ch[i]=='\0') break;
       }
       sort(num,num+k);
       for(i=0;i<k-1;i++)
       printf("%d ",num[i]);
       printf("%d\n",num[k-1]);
   }
   return 0;

}


你可能感兴趣的:(sort函数 使用于杭电1106)