注册 登录
编程论坛 C++教室

vector 和 数组 排序问题

haibohere 发布于 2013-02-09 14:44, 409 次点击
// 龙马精神.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <vector>
#include <iomanip>
using std::vector;
using std::cout;
using std::cin;
using std::endl;
void paixu(double &a,double &b);
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(NULL));      //生成随机数
    vector<double> vip(10);    //一个容器
    for(int i=0;i<10;i++)     //生成几个随机数储存到容器中
        vip[i]=rand()%20;

    for(int i=0;i<10;i++)     //把容器中的数字输出到屏幕
        cout<<std::setw(5)<<vip[i];
    cout<<endl;
    for(int i=0;i<9;i++)    //给容器中的数字排序
    for(int i=0;i<9;i++)
        paixu(vip[i],vip[i]);
    for(int i=0;i<10;i++)       //再次输出容器中的数字到屏幕,可是排序没体现出作用,还是第一次数字的顺序。
        cout<<vip[i]<<endl;
    int num=0;
    cin>>num;
    return 0;
}

void paixu(double &a,double &b){    //排序函数
    double c;
    if(a>b)
    {
        c=a;
        a=b;
        b=c;
    }
};

我用的容器,想给数字排序, 可是一点效果都没有,用数组就能。
想问下容器怎么不行。下面是数组的代码 我用的是 vs2010
一言九鼎.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using std::cout;
using std::cin;
using std::endl;
void px(int &a,int &b);
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(NULL));
    int num[10];
    for(int i=0;i<10;i++)
    {
        num[i]=rand()%90;
        cout<<std::setw(5)<<num[i];
    }
    cout<<endl;
    for(int i=0;i<9;i++)
    for(int i=0;i<9;i++)
    px(num[i],num[i+1]);
    for(int i=0;i<10;i++)
        cout<<std::setw(5)<<num[i];
    cout<<endl;
    int boy=0;
    cin>>boy;
    return 0;
}
void px(int &a,int &b){
    int c;
    if(a<b)
    {
        c=a;
        a=b;
        b=c;
    }
};


1 回复
#2
haibohere2013-02-09 15:08
我自己的小失误 丢人了
paixu( vip[i],vip[i]);
改成 paixu(vip[i],vip[i+1]);
就好了。
1