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;
}