c++输入10个数存入vector中,升序排序后输出. 提示:使用sort函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++输入10个数存入vector中,升序排序后输出. 提示:使用sort函数相关的知识,希望对你有一定的参考价值。
参考技术A #include <iostream>#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
class myclass
public:
myclass(int a, int b):first(a), second(b)
int first;
int second;
bool operator < (const myclass &m)const
return first < m.first;
;
bool less_second(const myclass & m1, const myclass & m2)
return m1.second < m2.second;
int main()
vector< myclass > vect;
for(int i = 0 ; i < 10 ; i ++)
myclass my(10-i, i*3);
vect.push_back(my);
for(int i = 0 ; i < vect.size(); i ++)
cout<<"("<<vect[i].first<<","<<vect[i].second<<")\n";
sort(vect.begin(), vect.end());
cout<<"after sorted by first:"<<endl;
for(int i = 0 ; i < vect.size(); i ++)
cout<<"("<<vect[i].first<<","<<vect[i].second<<")\n";
cout<<"after sorted by second:"<<endl;
sort(vect.begin(), vect.end(), less_second);
for(int i = 0 ; i < vect.size(); i ++)
cout<<"("<<vect[i].first<<","<<vect[i].second<<")\n";
return 0 ;
追问
兄弟 能告诉我一下这个思路么
本回答被提问者采纳c程序输入10个数到一维数组中,按升序排序后输出。
用三个函数实现数据的输入排序和输出
参考技术A #include<stdio.h>
#define
NUMBER
10
void
sort(int
*num)
int
i,
j;
for(i=0;
i<NUMBER-1;
i++)
for(j=i;
j<NUMBER;
j++)
if(num[i]
>
num[j])
int
t
=
num[i];
num[i]
=
num[j];
num[j]
=
t;
void
input(int
*num)
int
i;
printf("input
%d
number
:
",
NUMBER);
for(i=0;
i<NUMBER;
i++)
scanf("%d",
&num[i]);
void
output(int
*num)
int
i;
for(i=0;
i<NUMBER;
i++)
printf("%d
",
num[i]);
putchar('\n');
int
main()
int
num[NUMBER];
input(num);
sort(num);
output(num);
return
0;
参考技术B 提供一个冒泡算法
int sort_array(int array[],int array_len)
int i,j,ii,tmp;
j = array_len;
if(j == 0)
return 0;
/*sort*/
for(i=0; i < j; i++)
for(ii=i+1;ii < j; ii++)
if(array[i] > array[ii])
tmp = array[i];
array[i] = array[ii];
array[ii] = tmp;
return j;
参考技术C //演示输入N个数,并按大小顺序输出
#include<stdio.h>
#define N 10
float increase(float *array,unsigned char n);//申明使数组递增函数
void main()
unsigned char i,quit;
float number[N];
printf("请输入%d个数据,每个数输入后以回车键结束。",N);
again: for(i=0;i<N;i++)
printf("\n请输入第%d个数:",i+1);
scanf("%f",&number[i]);
increase(number,N);
printf("\n您输入的数据按从大到小顺序输出如下:");
for(i=0;i<N;i++)
printf("\n %10.2f",number[i]);//保留两位小数输出最大数
printf("\n继续测试请按Y或y,退出请按其它任意键。\n");
quit=getch();
if(quit=='y'||quit=='Y') goto again;
getch();
//方法1用指针实现 冒泡排序法(大数由底部往上冒)
/*
float increase(float *array,unsigned char n)
unsigned char i,j;
float temp,*ip;
for(i=0;i<n-1;i++)//注意i的结束条件要写对
for(j=n-1;j>i;j--)//注意j的结束条件要写对
ip=array;
if(*(ip+j)>*(ip+(j-1) ))
temp=*(ip+j);
*(ip+j)=*(ip+(j-1) );
*(ip+(j-1))=temp;
*/
//方法2用指针实现 快速排序法
float increase(float *array,unsigned char n)
unsigned char i,j,k;
float temp,*ip;
for(i=0;i<n-1;i++)//注意i的结束条件要写对
k=i;
for(j=i+1;j<n;j++)//注意j的结束条件要写对
ip=array;
if(*(ip+k)<*(ip+j))
k=j;//记住最大数的下标(位置)
ip=array;
temp=*(ip+k);
*(ip+k)=*(ip+i);
*(ip+i)=temp;
参考技术D 真晕。
作业党啊 第5个回答 2010-01-15 #include <stdio.h>
#define NUMBER 10
void sort(int *num)
int i, j;
for(i=0; i<NUMBER-1; i++)
for(j=i; j<NUMBER; j++)
if(num[i] > num[j])
int t = num[i];
num[i] = num[j];
num[j] = t;
void input(int *num)
int i;
printf("input %d number : ", NUMBER);
for(i=0; i<NUMBER; i++)
scanf("%d", &num[i]);
void output(int *num)
int i;
for(i=0; i<NUMBER; i++)
printf("%d ", num[i]);
putchar('\n');
int main()
int num[NUMBER];
input(num);
sort(num);
output(num);
return 0;
以上是关于c++输入10个数存入vector中,升序排序后输出. 提示:使用sort函数的主要内容,如果未能解决你的问题,请参考以下文章