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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

ソート

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

配列

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

Q&A

解決済

2回答

3514閲覧

ソートしたスライスの中身の数値だけ([]なし)で取り出す方法

ayapiss

総合スコア12

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

ソート

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

配列

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

0グッド

0クリップ

投稿2018/09/20 08:28

初歩的な質問かとは思いますが、よろしくお願いいたします

前提・実現したいこと

(例)
9
10
15
11
8

例のような数字があった場合に、一番大きい数字と一番小さい数字を取り出す方法を教えてください。

該当のソースコード

go

1package main 2 3import ( 4 "fmt" 5 "sort" 6) 7 8func main() { 9 var n_1, n_2, n_3, n_4, n_5 int 10 n_1, n_2, n_3, n_4, n_5 = 9, 10, 15, 11, 8 11 a := []int{n_1, n_2, n_3, n_4, n_5} 12 sort.Sort(sort.IntSlice(a)) 13 14 fmt.Println(a[4:5]) 15 fmt.Println(a[0:1]) 16} 17

試したこと

私が思いついた方法がスライスにしてソート、1番目と5番目を抜き出すという方法だったのですが、スライスだと[]がついてしまうので、他の方法でも解決策があれば教えていただけると嬉しいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

もともとのコードを活かすとこのような形でしょうか?
よろしければスライスだと[]がついてしまうので、他の方法でもとおっしゃっている意図(目的)を教えていただけると回答しやすいと思います

go

1package main 2 3import ( 4 "fmt" 5 "sort" 6) 7 8func main() { 9 var n_1, n_2, n_3, n_4, n_5 int 10 n_1, n_2, n_3, n_4, n_5 = 9, 10, 15, 11, 8 11 a := []int{n_1, n_2, n_3, n_4, n_5} 12 13 // 参考までにですが、こうすると一発でスライスデータの用意ができます 14 // a := []int{9,10,15,11,8} 15 16 fmt.Println("max=", maxInt(a)) 17 fmt.Println("min=", minInt(a)) 18} 19 20func maxInt(a []int) int { 21 sort.Sort(sort.IntSlice(a)) 22 return a[len(a)-1] 23} 24 25func minInt(a []int) int { 26 sort.Sort(sort.IntSlice(a)) 27 return a[0] 28} 29 30

投稿2018/09/20 15:18

編集2018/09/20 15:23
mats0228

総合スコア219

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

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

ayapiss

2018/09/21 00:23

ご回答ありがとうございます。 元のコードを活かした形で教えていただき、ありがとうございます。 スライスだと[]がついてしまうので、他の方法でも と書いた意図は、私のコードだと fmt.Println(a[4:5]) => [15] となってしまっていて、[]を取りたかったということでした。 return a[len(a)-1] とすることで[]なしで表示できることが分かりました。ありがとうございます。
guest

0

それぞれ最小値、最大値を求める関数を作るといいかと思います。
(もっと簡単にする方法もあるかもしれません)

go

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 var n_1, n_2, n_3, n_4, n_5 int 9 n_1, n_2, n_3, n_4, n_5 = 9, 10, 15, 11, 8 10 a := []int{n_1, n_2, n_3, n_4, n_5} 11 12 fmt.Println(max(a)) 13 fmt.Println(min(a)) 14} 15 16func max(a []int) int { 17 max := a[0] 18 for _, i := range a { 19 if i > max { 20 max = i 21 } 22 } 23 return max 24} 25 26func min(a []int) int { 27 min := a[0] 28 for _, i := range a { 29 if i < min { 30 min = i 31 } 32 } 33 return min 34}

投稿2018/09/20 08:40

hasue

総合スコア155

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

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

ayapiss

2018/09/21 00:12

ご回答ありがとうございます。 rangeを使って、それぞれの大小比較を行うという方法は思いつかなかったので、参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問