1件ずつ調べていく手法です。最小値の抽出は以下の通り。
fn main() {
let data = [6, 15, 4, 2, 8, 5, 11, 9, 7, 13];
let mut min = 0;
for i in 0..data.len() {
if data[min] > data[i] {
min = i;
}
}
println!("minimal num:{}", data[min]);
}
### 選択ソート
n * (n – 1) / 2 の計算量が必要になる。もっとも小さいものを左から順番に並べていく。
mem::swap(&mut data[min], &mut data[i]);は使えない。
use std::mem;
fn main() {
let mut data = [6, 15, 4, 2, 8, 5, 11, 9, 7, 13];
for i in 0..data.len() {
let mut min = i;
let k = i + 1;
for j in k..data.len() {
if data[min] > data[j] {
min = j;
}
}
// mem::swap(&mut data[min], &mut data[i]);
data.swap(i, min);
}
println!("sorted data:{:?}", data);
}
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.44s
Running `target/debug/rust`
sorted data:[2, 4, 5, 6, 7, 8, 9, 11, 13, 15]
なるほど、普段ソートとか考えたことなかったが、こうなってるのか。。面白いね。







