さくさく経理!

経理の効率化につながるお役立ち情報を記していきます

効率的な伝票並べ替え方法はバケットソート

こんにちは、さくさく経理!です。
前回は伝票の並べ替え手間を減らす話をしましたが、とはいえ並べ替えが必要なものも残ると思います。

今日は伝票並べ替え方法を計算機科学のアルゴリズムの観点から考えます。
計算機科学のソートアルゴリズムはたくさんありますが、実際に経理の方が行われるものは次の4つでしょう。

  1. 挿入ソート
  2. バケットソート
  3. マージソート
  4. クイックソート

順に解説していきます。
※現実に合わせるため厳密なアルゴリズムの説明とは異なります。

挿入ソート

挿入ソートは、並べ替え済の束に、どこに挿入すれば並びを崩さないか考えて、そこに挿入する方法です。

数枚の伝票を番号順に並べ替える時、意識しないまま自分の手元でこのようなやり方を行っていると思います。
1枚、2枚と1枚ずつ順番を考えて整理していくソート法です。

さて、このソート法でどれだけ時間が必要か考えてみましょう。

  1. どこに挿入したら良いか探す
  2. 発見した場所に挿入する

の2工程必要ですが、並べ替え対象枚数が多いほど1の工程に時間がかかります
並べ替え対象が多い場合、最も時間のかかる手法となります。

バケットソート

バケツソートとも呼ばれるバケットソートは、いくつかバケツを用意しておき、どのバケツに入れるべきか考えて、そこに投入する方法です。

例えば、支払伝票を支払先に応じてあ行、か行、、と分類したい場合、あ行のバケツ、か行のバケツと、あかさたなはまやらわで10個のバケツを用意しておき、各伝票を判別して、それぞれのバケツに投入していく手法です。

さて、このソート法でどれだけ時間が必要か考えてみましょう。

  1. どのバケツに投入したら良いか考える
  2. 検討したバケツに投入する

の2工程必要です。例で挙げた分類のように1の工程で行う判別が思考時間のかからないものであれば1の工程に要する時間は微量です。
2の工程もバケツの数が10個程度であれば、遠くのバケツまで移動する時間もかかりません。
言ってみれば分類するだけですから、最も速く整理できる手法となります。

マージソート

マージソートは、並べ替え済の複数の束を、並びを崩さないように統合する方法です。

番号順の場合は1から順にトランプの七並べをするイメージです。伝票の束を2分割して各自が挿入ソートで並べ替えしたものを、番号の小さいものから順に出していき統合します。
バケットソートで並べ替えしたものの場合、それぞれのバケツをまとめることで統合されます。

伝票並べ替えの担当者が1人だと使えませんが、複数いる場合は後でマージソートすることを考えて作業分散しましょう。

クイックソート

クイックソートは、伝票の束から特定条件の伝票を抜き出す方法です。

会計監査や税務調査で特定の伝票を抜き出したい場合、伝票番号など特定の条件を頭に入れて、該当するか瞬時に判断して次の伝票をめくる作業をされると思います。
あるいは、特定の支払先に対して支払明細書を作成する必要がある場合、伝票の束から特定の支払先に該当するか頭に入れて伝票を抜き出す作業をされると思います。

経理の現場で使用するクイックソートは並べ替えに使用するものではなく伝票の抜き出しに使用するものですが、このソート法の特徴は、特定条件がシンプルな限り最も速く処理できる手法です。

番号順に整理していた伝票を分類ごとの整理にすると伝票探索が発生しますが、クイックソート探す伝票の数が分かっているなら、必要数発見した時点で探索は終わります伝票数が不明の場合は、探す対象が少なくなるよう事前に分類しておくべきです。

後で苦労しないために番号順に並べ替える会社が多いと思いますが、分類が適切であれば意外にクイックソートによる探索は時間がかかりません。

まとめ

伝票整理は基本的にバケットソートで何らかの基準を設けて分類し、並べ替え担当が複数いればそれをマージソート挿入ソートは最小限に抑え、伝票を探す時はクイックソートする、ことが私のオススメです。