2010-05-21 90 views
12

說我有一個列表val list = List(34, 11, 98, 56, 43).如何找到最小值的元素索引?

現在我如何找到列表的最小元素的索引(例如在這種情況下是1)?

+0

這是一個家庭作業。我認爲這很容易做 – vodkhang 2010-05-21 13:39:35

+2

這是一個非常簡單的作業問題。 – Odrade 2010-05-21 13:48:01

+2

@vodkhang和@Odrade,我畢業10年了。他們沒有在我們的大學教我們函數式編程。因此,這樣的作業聽起來很有問題。 :( – Surya 2010-05-21 17:58:06

回答

23

在斯卡拉2.8:

List(34, 11, 98, 56, 43).zipWithIndex.min._2 
6

空列表沒有最小值。只有一個元素的列表具有該元素作爲其最小值。對於所有其他列表,最小值或者是該列表的第一個元素,或者是列表的其餘部分的最小值,具體取決於哪個更大。

所以要找到這個索引,這變成:對於長度爲1的列表,最小值的索引是0.如果列表中有多個元素,並且尾部的最小值大於頭部,那麼它也是0。如果頭部更大,那麼該指數是尾部加最小值的指數加1。

6

我想最簡單的方法是list.indexOf(list.min)。當列表爲空時,它會拋出異常,但Daniel的答案也是如此。

相關問題