1

だから私がしなければならないことは、ある配列から別の配列に直接ソートされた特定の値を挿入することです。これを行う方法が思いつきません...最大値から最小値に挿入する必要があります。これが私が今まで持っているものです:

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

必要なアルゴリズムはselection sortです。これを使用して、並べ替えとコピーを同時に行うことができます。

于 2013-04-09T10:40:31.233 に答える
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 に答える
1

プライオリティ キューを確認できます。

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

于 2013-04-09T10:34:44.897 に答える