有一组数据,放在一个数组里,如何得到他们从小到大的顺序。
例如:20,32,14,25,61,7,5,12,15
那么得到的数组是:6,8,4,7,9,2,1,3,5

解决方案 »

  1.   

    ???
    ============================================================================
    提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
    http://www.betajin.com/alphasun/index.htm          给我发信息请附带原帖地址
    http://alphasun.18en.com/                    http://shakingtoolkit.9126.com/
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  2.   

    我猜出来了. :)
    新建一个同样大的数组 p[1]=1,p[2]=2,... 排序时同步一下,结果就在 p[]里面了.
      

  3.   

    #include <vector>
    #include <functional>
    #include <algorithm>
    #include "iostream"
    using std::vector;
    class Data
    {
    public:
    Data(int a,int b):m_data(a),m_index(b)
    { }
    operator int()
    {
    return m_data;
    }
    int GetIndex()
    {
    return m_index;
    }
    int GetValue()
    {
    return m_data;
    }
    private:
    int m_data;
    int m_index;};
    inline bool my_data_less(Data& x,Data& y)
    { return x.GetValue() < y.GetValue(); };
    int main(int argc, char* argv[])
    {
    vector<Data> srcdata;
    int unsortarray[]={20,32,14,25,61,7,5,12,15 };
    for(int i=0;i<sizeof(unsortarray)/sizeof(unsortarray[0]);i++)
    srcdata.push_back(Data(unsortarray[i],i+1));
    std::sort(srcdata.begin(),srcdata.end(),my_data_less);
    for(std::vector<Data>::const_iterator it=srcdata.begin();it!=srcdata.end();it++)
    {
    Data data=*it;
    std::cout<<"index:"<<data.GetIndex()<<",\t value:"<<data.GetValue()<<std::endl;
    }
    return 0;
    }