将值从一个数组插入另一个数组直接排序

时间:2013-04-09 10:14:26

标签: c++ sorting vector

所以我要做的是将一个数组中的某些值插入到另一个数组中直接排序,而不必在以后使用BubbleSort或QuickSort或任何其他方法对它们进行排序。我想不出这样做的方法......我必须将它们从最大值插入到最小值。这就是我到现在所拥有的:

void palindroame (int x[100], int y[100]) {
    int i=0, j, k=0, aux;
    while (x[i]!=0) { 
        k++; i++; 
    }
    i=0;
    for (i=0; i<=k-1; i++) y[i]=0;
    for (i=0; i<=k-1; i++) { 
        if (palindrom(x[i])!=0 && palindrom(x[i+1])!=0) 
            if (x[i]<x[i+1]) { 
                aux=x[i+1]; x[i+1]=x[i]; x[i]=aux; 
            } 
    } //wrong
    for (i=0; i<=k-1; i++) { 
        if (palindrom(x[i])) y[i]=x[i]; 
    } //wrong
}

提前致谢!

3 个答案:

答案 0 :(得分:2)

您需要的算法是selection sort,您可以使用它同时进行排序和复制。

答案 1 :(得分:1)

答案 2 :(得分:1)

这是我最近做过的选择排序的一个例子(其中a是向量)

应该给你足够的希望它有所帮助,如果你喜欢问问题

for (unsigned int i = 0; i < a.size()-1; i++)
{
    int min = i;

    for(unsigned int j = i +1; j < a.size(); j++)
    {
        // If new minimum is found then stores this as the new minimum
        if(a[j] < a[min])
        {
            min = j;
        }
    }
    // Stores the values in the array in ascending order
    if (min != i)
    {
        int temp = a[i];
        a[i] = a[min];
        a[min] = temp;
    }
}
// Returns the array in ascending order
return a;

编辑:只是为了澄清这是在一个已经有值的矢量,如果不清楚但是代码注释的例子我认为足以帮助你IMO