1

所以我要做的就是将某些值从一个数组插入到另一个直接排序的数组中,而无需稍后使用 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
}

提前致谢!

4

3 回答 3

2

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

于 2013-04-09T10:40:31.233 回答
1

您可以查看优先级队列:

http://www.cplusplus.com/reference/queue/priority_queue/

于 2013-04-09T10:34:44.897 回答
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

于 2013-04-09T12:03:33.837 回答