C++排列未知大小的数组顺序的函数怎么做啊?

我想做一个任意一个double型或者int型的数组进行排列的函数。可是到了第一步函数定义就遇到问题了。请问怎么做这样的函数啊?

你所说的位置大小的数组,应该是在输入的时候不知道会从键盘输入多少个数吧,当输入完成的时候,输入了多少个数是能知道的。这时候你可以用冒泡排序,也可以用选择排序。
输入不定个数的数据,有多种方法,比如当输入回车符的时候结束输入,或者当输入-1的时候结束,这个根据具体情况来定。下面的例子是当输入回车符时结束输入。
运行结果:

img

代码如下:


#include <iostream>
using namespace std;
//冒泡排序
void bubble_sort(int a[],int n);
//选择排序,升序
void select_sort(int a[],int n);

int main()
{
    int *p;
    int n=0;
    int maxsize=1000;
    p = new int[maxsize]; //先申请maxsize个空间
    while(1)
    {
        cin >> p[n];
        n++;
        if(n==maxsize)
        {
            maxsize += 100;//在原来的基础上再额外申请100个空间
            int *q = new int[maxsize];
            //把原数组的元素复制到新数组中
            for(int j=0;j<n;j++)
                q[j]=p[j];
            //释放原来的空间
            delete[] p;
            //让p指向新申请的空间
            p = q;
        }
        if(cin.get() == '\n') //输入回车符结束输入
            break;
    }
    //冒泡排序或者选择排序,都可以
    bubble_sort(p,n); //select_sort(p,n);
    //输出排序后的数组
    for(int i = 0;i<n;i++)
        cout << p[i] << " ";
    //释放空间
    delete[] p;
    p = 0;
    return 0;
}


//冒泡排序
void bubble_sort(int a[],int n)
{
    int i,j,t;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(a[j] > a[j+1])  //从小到大,升序
            {
                t = a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
}

//选择排序,升序
void select_sort(int a[],int n)
{
    int i,j;
    int minindex,tmp;
    for (i=0;i<n-1;i++)
    {
        minindex = i;
        //找出第i小的数所在的位置
        for(j=i+1;j<n;j++)
        {
            if(a[j] < a[minindex])
                minindex = j;
        }

        //将第i小的数放在第i个位置
        if (i != minindex)
        {
            tmp = a[i];
            a[i] = a[minindex];
            a[minindex] = tmp;
        }
    }

}

未知大小的非字符串是没法排序

其实用c++的话,有现成的工具
直接

int array[];//doble array[] 也可以
stl::sort(begin(array),end(array));