2020-09-13から1日間の記事一覧

ToOwnedトレイト

メモ スライスから元のスマートポインタに変換することができることで使われているように思う。 Borrow<Borrowed>トレイトを実装することで自動導出もされる。 動機 Stringはメソッドを呼ぶと返り値として&strを返すものがあります。 例 trim_end // 改行を取り除くと </borrowed>…

基数ソート in Rust

基数ソート radix sort O(N logN) バケットソートは巨大な数字が存在するとその分箱の数を用意する必要がある 基数ソートは各桁に対してバケットソートすることで最後にソートすることができる // Number of Digits const D: usize = 3_usize; // Number of …

バケットソート in Rust

バケットソート bucket sort O(N logN) 比較をしないソート 含まれている値の種類の数が決定している必要がある ( = バケツの数) const RANGE: usize = 10; fn main() { let a = [5,4,6,7,1,3,8,2,9,0]; let mut d = [0;RANGE]; bucketsort(a, &mut d); prin…

バブルソート in Rust

バブルソート bubble sort O(N^2) 先頭から順に隣同士比較していく (最大値から決定する) fn main() { let mut a = [8, 3,4, 3, 7, 6, 5, 2, 1, 10]; for i in 0..a.len() { for j in i+1..a.len() { if a[j] < a[i] { a.swap(i, j); } } } println!("{:?}",…

選択ソート in Rust

選択ソート selection sort O(N^2) 最小値から順に決めていく 安定ソートでない fn main() { let mut a = [3, 2, 1, 4, 1]; for i in 0..a.len() { let mut min = i; for j in i..a.len() { if a[min] > a[j] { min = j; } } a.swap(i, min); } println!("{:…

挿入ソート in Rust

挿入ソート insertion sort O(N^2) 第2項から先頭に向かって隣同士入れ替えていく 昇順 fn main() { let mut a = [10, 3, 3, 1, 90, 34, 78, 2, 12, 56, 1]; for ins in 1..a.len() { // 挿入する値を退避 let temp = a[ins]; for cmp in (0..ins).rev() { …