gagamon
@gagamon

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

構造体の中の値xをもとに計算した構造体の外の値yを用いてバブルソートってできますか?

解決したいこと

C言語です

構造体によって作られたリストがあります。
構造体の中の値xをもとに計算した構造体の外のyを用いてバブルソートってできますか?

リストの例です
1, x = 10 y = 2
2, x = 3 y = 5
3, x = 5 y = 4
4, x = 12 y = 10
5, x = 6 y = 11
6, x = 7 y = 3


typedef struct iorb {
    int x;   //ランダムに生成
    struct iorb *link;  // pointer for next
} IORB;

int newY(int x) {
    int y = xをもとにランダムに計算する;
    return y;
}

0

3Answer

    int y = xをもとにランダムに計算する;

の意味がよく分かりませんがyの値がxの値から一意に決まるのであればソートは普通に可能です。

2Like

構造体という形を取ろうが取るまいがどっちみちyの値は一度計算してどこかしらの配列に保持しておく必要はあります.というのも要素どうしの比較の時必ずA>Bとなるような関係が決定されていないと処理が終わらなくなっちゃいますので…(実際多くの言語のsortにおいては比較が逆転するような関数を書くと怒られます)

構造体外の関数を使おうが構いませんが,比較の際に値が不定になるような実装はやめろということです.

int randomY(int x);//ランダム値を返す関数とする

//int comp1 = randomY(A) > randomY(B); //NG

int Ay = randomY(A);
int By = randomY(B); 
// 必ずこれらを保持しておく
int comp2 = Ay > By;
0Like

Your answer might help someone💌