ソート(英:sort)とは、種類、仕方、方法などを意味する英単語である。
またコンピューター用語としては、「情報の並べ替え」を行うこと。この記事ではこれについて解説する。
プログラミングにおいて、ソートとはバラバラなデータを規則正しく並べ替えること。コンピュータで扱う代表的な問題なので、効率化のためにいろいろなアルゴリズムが開発されてきた。
並のプログラマーはライブラリにソート処理を投げていることが多いため、自前で実装しろといわれると中々思い出せず、分厚い参考書を引っ張り出すハメになる物。
その他多数。ソートの調べ物をするときに「安定ソート」とか「平均計算量」とかに気をつけると楽しい。
ソートのアルゴリズムで必ず最初に習うもの。比較回数、交換回数やたら多く、元の並び順によって比較回数が変わるということも無いので効率が悪い。
#include <stddef.h> /* size_t */ void bubble_sort(int *base, size_t nmemb) { size_t i; for (i = 0, nmemb--; i < nmemb; i++) { size_t j; for (j = nmemb; j > i; j--) { /* 後ろの方から始める */ if (base[j - 1] > base[j]) { /* 隣り合った要素を比較し、前が大きければ交換。 */ int tmp; tmp = base[j - 1]; base[j - 1] = base[j]; base[j] = tmp; } /* これを繰り返して小さい物をどんどん前へ持って行く。 */ } /* この時点で一番前の要素が確定する。 */ } return; }
このサイトを支えているRubyでソートをするときはこんな感じになる。
array = array.sort
簡単ですね。これからプログラムを学ぶ人はRubyに入信しなさい。
キャラクターの表示順序のためにバケットソートを利用している。アルゴリズムの解説付き。
ソート対象の値を音の高低で表すことでソートの様子を視覚的・聴覚的に理解できる。
(様々なソートアルゴリズムの記事については、「種類」の節を参照)
掲示板
16 ななしのよっしん
2019/08/20(火) 11:08:55 ID: 4jDkzB1ATM
>>15
そういえばこの分野でよく辞書式順序って言うけど、日本語の国語辞書がやっているある意味「現実」の辞書式順序はなかなか複雑で、
全ての見出し語から「清音に直したデータ」と「濁点・小文字等のデータ」を作って
「清音に直したデータ」だけ見て辞書式にソートして、それでも順序が決まらないときは「濁点・小文字等」がどうなっているか比較するという二段構えになっている。
さらに表記欄の漢字表記まで見て何らかの順序を設けたり。大変だこりゃ
17 ななしのよっしん
2025/01/09(木) 06:46:29 ID: F5b55jObch
LSDにビジュアルと効果音付けたやつすき
よくわからないごちゃごちゃが続いた後に最後の2手くらいで急に揃うのが見てて気持ちがいい
みんなも疲れた時にはLSDをキメよう(語弊のある発言)
18 ななしのよっしん
2025/02/16(日) 22:56:25 ID: o8iS3Nid6Z
「スターリンソート」というジョークソートがある
1. 要素を順番に見ていく
2. それが列の先頭の要素であるか、直前の要素よりも大きければ残す。そうでなければ「粛清」する。
3. なんか要素の数が減っている気がするが、ソートされているのでヨシ!
提供: uni
提供: 南蛮一の知恵者 朶思大王
提供: ななのといこ
提供: ちさ
急上昇ワード改
最終更新:2025/03/28(金) 10:00
最終更新:2025/03/28(金) 10:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。