質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1911閲覧

swift ソートされた配列と同じように別の配列をソートしたい

zakkiblog

総合スコア3

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/04/26 11:40

var member = ["A","B","C","D","E"] var scorer = [0,0,0,0,0]

人と点数の二つの配列を用意しゲームの結果によりそれぞれの点数が変動するものを作りました。
最後にscoreをソートして並び替えたのですが、その結果に対応するようにmemberの方の配列をソートする方法が分かりません。

score.sort{ $0 > $1 }

この後にどのような方法でmemberの方をソートすれば良いのか教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomato879241

2021/04/26 13:40

2つをまとめて、ただDictionaryの配列にすればいいのでは?
guest

回答1

0

ベストアンサー

別々の配列のままでソートしたいなら、いったん index の配列をソートして、それに基づいて member と score を並べ替える方法があります。

swift

1var member = ["A","B","C","D","E"] 2var score = [2,4,1,0,3] 3 4let index = score.indices.sorted { score[$0] > score[$1] } 5member = index.map { member[$0] } 6score = index.map { score[$0] } 7 8print(member) // ["B", "E", "A", "C", "D"] 9print(score) // [4, 3, 2, 1, 0]

が、タプルや構造体の配列を使った方が分かりやすいかと思います。

swift

1var tuples = [("A", 2), ("B", 4), ("C", 1), ("D", 0), ("E", 3)] 2tuples.sort { $0.1 > $1.1 } 3print(tuples) // [("B", 4), ("E", 3), ("A", 2), ("C", 1), ("D", 0)]

swift

1struct Member { 2 var name: String 3 var score: Int 4} 5 6var members = [ 7 Member(name: "A", score: 2), 8 Member(name: "B", score: 4), 9 Member(name: "C", score: 1), 10 Member(name: "D", score: 0), 11 Member(name: "E", score: 3), 12] 13 14members.sort { $0.score > $1.score }

投稿2021/04/26 22:42

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zakkiblog

2021/04/27 03:27

丁寧に教えて頂きありがとうございます。 非常に参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問