JP2009199439A - マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム - Google Patents

マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム Download PDF

Info

Publication number
JP2009199439A
JP2009199439A JP2008041666A JP2008041666A JP2009199439A JP 2009199439 A JP2009199439 A JP 2009199439A JP 2008041666 A JP2008041666 A JP 2008041666A JP 2008041666 A JP2008041666 A JP 2008041666A JP 2009199439 A JP2009199439 A JP 2009199439A
Authority
JP
Japan
Prior art keywords
data
merge sort
value
sort processing
merge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008041666A
Other languages
English (en)
Inventor
Shuji Ishiwatari
修二 石渡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008041666A priority Critical patent/JP2009199439A/ja
Publication of JP2009199439A publication Critical patent/JP2009199439A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データのマージソート処理における処理時間を短縮できるマージソート処理方法、マージソート処理装置、及びマージソート処理プログラムを提供する。
【解決手段】複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理方法において、前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理工程と、前記第1マージソート処理工程により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理工程と、を備える。
【選択図】図2

Description

本発明は、データのマージソート処理におけるマージソート処理方法、マージソート処理装置、及びマージソート処理プログラムに関する。
従来のマージソート処理では、例えば2n個のデータをソートする場合に、最低でも2n-1×n回データの比較を行っており、また、マージ対象の配列を約半分の2つの配列に分割する作業を、各配列が要素数1になるまで再帰的に呼び出してからマージ及びソートを行っていた。
例えば下記特許文献1では、ソート対象のデータ列のデータ値を、グループ定義に従ってグループ化により分割し、グループ単位のデータ列を作成し、グループは対象データ値全範囲を適度な個数(サイズ)で任意に区切ったものであり、構成値により順序付けられ、グループ単位のデータ列に対して、個別にソート処理を行った後、全ての列をグループ順に結合することが開示されている。
特開2007−133576号公報
しかしながら、上記従来の技術では、最悪の場合のデータの比較回数が少ない点で優れているが、最善の場合でもデータの比較回数がある程度多くなることや、配列を約半分の2つの配列に分割する作業を再帰的に各配列の要素が1になるまで行う必要があり、データのソート処理における処理時間が掛かるという問題点があった。
そこで、本発明では、上記各問題点に鑑みて為されたもので、その目的の一例は、データのマージソート処理における処理時間を短縮できるマージソート処理方法、マージソート処理装置、及びマージソート処理プログラムを提供することである。
上記の課題を解決するために、請求項1に記載の発明は、複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理方法において、前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理工程と、前記第1マージソート処理工程により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理工程と、を備えることを特徴とする。
上記の課題を解決するために、請求項2に記載の発明は、請求項1に記載のマージソート処理方法において、前記第1マージソート処理工程は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とする。
上記の課題を解決するために、請求項3に記載の発明は、複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理装置において、前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理手段と、前記第1マージソート処理手段により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理手段と、を備えることを特徴とする。
上記の課題を解決するために、請求項4に記載の発明は、請求項3に記載のマージソート処理装置において、前記第1マージソート処理手段は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とする。
上記の課題を解決するために、請求項5に記載の発明は、複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理装置に含まれるコンピュータを、前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理手段、及び前記第1マージソート処理手段により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理手段、として機能させることを特徴とする。
上記の課題を解決するために、請求項6に記載の発明は、請求項5に記載のマージソート処理プログラムにおいて、前記第1マージソート処理手段は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とする。
以上説明したように、本発明によれば、第一のマージ処理を2つのデータではなく、3つのデータをマージするため、最善の場合にはマージソート処理によりデータ同士の比較回数が少ないことにある。
また本発明によれば、マージソート処理においてデータ列の先頭から3つずつデータを処理していくため、配列を約半分の2つの配列に分割する作業を再帰的に各配列の要素が1になるまで行うことが不要である。
次に、本発明に好適な実施の形態について、図面に基づいて説明する。
本発明の実施形態に係るマージソート処理装置は、ソート対象のデータを格納した配列100と、第一のマージ処理装置110(第1マージソート処理手段の一例)と、第二のマージ処理装置120(第2マージソート処理手段の一例)と、ソートが完了したデータを格納する配列130とを備えている。
第一のマージ処理装置110は、配列100の先頭からデータを3つずつ受信し、マージ及びソートを行い、第二のマージ処理装置120へ送信する。
第二のマージ処理装置120は、第一のマージ処理装置110から受信したデータを、一般のマージソートと同様にソート及びマージを繰り返し、その結果を配列130へ送信する。
次に、本発明の実施形態の動作について、図1及び図2を参照して説明する。なお、図1は本発明の実施形態に係るマージソート処理方法におけるデータ列のマージソート処理の一例を示すフローチャートの概略図であり、図2は本発明の実施形態に係るマージソート処理方法におけるデータ列のマージソート処理の一例を示すフローチャートである。また、本実施形態は昇順へのソートの場合の実施形態である。
まず、第一のマージ処理装置110は、配列100に格納されているデータを先頭から3つずつ受信する(ステップA1)。
次に、第一のマージ処理装置110は、受信した一番目のデータと二番目のデータを比較し、二番目のデータが一番目のデータより小さい場合は、一番目のデータと二番目のデータを入れ替える(ステップA2)。
更に、二番目のデータと三番目のデータを比較し、三番目のデータが二番目のデータより小さい場合は、二番目のデータと三番目のデータを入れ替え、更に、一番目のデータと入れ替え後の二番目のデータを比較し、二番目のデータが一番目のデータより小さい場合は、一番目のデータと二番目のデータを入れ替える(ステップA3)。
最後に、並んだ長さ3の配列データを、第二のマージ処理装置120へ送信する。
また、第一のマージ処理装置110が配列100から受信するデータが2つしかない場合には、ステップA2の処理の後、第二のマージ処理装置120へ送信する。
また、第一のマージ処理装置110が配列100から受信するデータが1つしかない場合には、そのまま第二のマージ処理装置120へ送信する。
第二のマージ処理装置120は、第一のマージ処理装置110から全ての配列データを受信し、一般のマージソート処理と同様に、マージ及びソートを行い(ステップA4)、結果を配列130に格納する(ステップA5)。
次に、本実施形態の動作について、図3を用いて具体的に説明する。
例えば、長さ12の配列{3,5,6,8,11,1,9,7,12,4,10,2}に対して、図3のソート処理装置でソートする場合、{3,5,6}、{8,11,1}、{9,7,12}、{4,10,2}と長さ3の配列4つに分け(ステップB1)、夫々ソートを行う。
長さ3の配列内でソートされたデータは、{3,5,6}、{1,8,11}、{7,9,12}、{2,4,10}となり(ステップB2)、以降は、一般のマージソート処理と同様に、ソートを行い、{1,2,3,4,5,6,7,8,9,10,11,12}のソート済みのデータを得ることができる(ステップB3)。
ここで、本実施形態に係るマージソート処理方法と、上記特許文献1に記載のマージソート処理方法とを比較する。
上記特許文献1に記載のマージソート処理方法では、ソート済みの配列を単純に結合(マージ)する方法、即ち、ソート済みの配列を結合するステップでは、データの比較は行っていない方法であるのに対して、本実施形態に係るマージソート処理方法は、データの比較を行いながら結合をしている。
具体的には、上記特許文献1では、例えば、12個のデータを並び替える際にサイズ3で考える場合、{1以上3以下}、{4以上6以下}、{7以上9以下}、及び{10以上12以下}の4領域に分け、分けた領域の中で並び替えを行い、結合(マージ)では、単純に後ろにデータを並べるのみである。
したがって、この方式では、データ中の最小値及び最大値が分からなければソートできない、つまりデータの最小値及び最大値を取得するための作業が余計にかかり、更に、例えば1023個のデータをサイズ3の領域341グループに分けてソートする場合、上記の最小値及び最大値の取得作業を除いて考えても、少なくとも175612回のデータ比較が必要となり、非常に効率が悪い。
また、そもそも上記特許文献1は、処理性能をデータ値の個数N、グループ数Mとして、N×log(N/M)で提示しているが、データ値と同じ個数のグループに分ける場合には、100×log(100/100)=100×log(1)=100×0=0となり、計算が成立しない。即ち、グループにデータ値を振り分ける処理性能を全く考えていない。
具体的に実際の数値{3,1,4,5,2,6}を用いて比較すると、上記特許文献1においてサイズ3の2グループに分ける場合、3は3以下なので(比較1)グループ1へ、1は3以下なので(比較2)グループ1へ、4は3以下ではないので(比較3)グループ2へ、5は3以下ではないので(比較4)グループ2へ、2は3以下なので(比較5)グループ1へ、6は3以下ではないので(比較6)グループ2へ、夫々分けられ、従って、グループ1{3,1,2}、及びグループ2{4,5,6}に分けられることになる。
次に、グループ1内でのソートは、3と1との比較では1が小さい(比較7)ので3と1を入れ替え、3と2との比較では2が小さい(比較8)ので3と2を入れ替え、1と2との比較では1が小さい(比較9)のでそのままであり、一方、グループ2内でのソートは、4と5との比較では4が小さい(比較10)のでそのままであり、5と6との比較では5が小さい(比較11)のでそのままであり、4と6とは比較しないので、グループ1{1,2,3}、及びグループ2{4,5,6}に並び替えられ、単純結合により、{1,2,3,4,5,6}のソートが合計11回の比較で完了する。
一方、本発明の実施形態に係るマージソート処理方法の場合、先頭から3つずつ値を取り、{3,1,4}と{5,2,6}の2つのグループができ、{3,1,4}のソートにおいて、3と1との比較では1が小さい(比較1)ので3と1を入れ替え、3と4との比較では3が小さい(比較2)のでそのままであり、一方、{5,2,6}のソートにおいて、5と2との比較では2が小さい(比較3)ので5と2を入れ替え、5と6との比較では5が小さい(比較4)のでそのままであり、並び替えられた{1,3,4}、及び{2,5,6}のマージで1と2との比較では1が小さい(比較4)ので{1}が確定し、3と2との比較では2が小さい(比較5)ので{1,2}が確定し、3と5との比較では3が小さい(比較6)ので{1,2,3}が確定し、4と5との比較では4が小さい(比較7)ので{1,2,3,4,5,6}が確定し、合計7回の比較によりソートが完了する。
以上から、本実施形態に係るマージソート処理方法は、上記特許文献1に記載のマージソート処理方法と比較して、ソート回数を短縮することが可能である。
本実施形態によれば、ソート対象の配列を3つずつ分割し、分割された3つの値をソートし、ソートは、一番目と二番目の値で大小を比較し、更に大きい値と三番目の値で比較し、三番目の値が大きい場合には、ソートを完了し、三番目の値が小さい場合には、更に一番目と二番目で比較して小さい値と比較して並び替え、得られた3つのソート済みの値で、マージソート処理と同様にデータの値をマージするので、最善の場合にはマージソート処理によりデータ同士の比較回数が少なくなる。例えば、1024個のデータの並び替えを行う場合、マージソート処理においてはデータの比較回数が最低5012回必要であるのに対し、本実施形態では最低で4779回となる。特に、昇順に並び替える場合に、ある程度昇順に並んでいるデータであれば図2のステップ3で比較回数が1回で済ませられる可能性が高く、データの比較回数が少なくなる効果が顕著である。
また、本実施形態によれば、データ列の先頭から3ずつデータを処理していくので、マージソート処理では配列を約半分の2つの配列に分割する作業を再帰的に各配列の要素が1になるまで行う必要がなくなる。
なお、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において変更することが可能である。例えば、本発明は、データを昇順や降順に並べ替えるランキング作成の用途に適用することができる。また、本発明は、ソートを用いるシステム全般に適用することが可能である。
本発明の実施形態に係るマージソート処理方法におけるデータ列のマージソート処理の一例を示すフローチャートの概略である。 本発明の実施形態に係るマージソート処理方法におけるデータ列のマージソート処理の一例を示すフローチャートである。 本発明の実施形態に係るマージソート処理方法におけるデータ列のマージソート処理の一例を示す図である。
符号の説明
100 配列
110 第一のマージ処理装置
120 第二のマージ処理装置
130 配列

Claims (6)

  1. 複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理方法において、
    前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理工程と、
    前記第1マージソート処理工程により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理工程と、
    を備えることを特徴とするマージソート処理方法。
  2. 請求項1に記載のマージソート処理方法において、
    前記第1マージソート処理工程は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、
    当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とするマージソート処理方法。
  3. 複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理装置において、
    前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理手段と、
    前記第1マージソート処理手段により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理手段と、
    を備えることを特徴とするマージソート処理装置。
  4. 請求項3に記載のマージソート処理装置において、
    前記第1マージソート処理手段は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、
    当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とするマージソート処理装置。
  5. 複数のデータよりなるデータ列に含まれるデータの値を大小比較して昇順又は降順に並び替えるマージソート処理装置に含まれるコンピュータを、
    前記マージソート処理の対象となるデータ列に含まれるデータを、当該データ列の先頭から3ずつ取り出して部分的にマージソート処理を行う第1マージソート処理手段、及び
    前記第1マージソート処理手段により前記部分的にマージソート処理されたデータを、更に前記データ列に含まれるデータ全体のマージソート処理を行う第2マージソート処理手段、
    として機能させることを特徴とするマージソート処理プログラム。
  6. 請求項5に記載のマージソート処理プログラムにおいて、
    前記第1マージソート処理手段は、前記データ列の先頭から一番目のデータの値と二番目のデータの値とを大小比較し、更に当該大小比較結果による大きい方のデータの値と三番目のデータの値とを大小比較し、
    当該三番目のデータの値が、前記大小比較結果による大きい方のデータの値よりも小さい場合には、更に前記一番目のデータの値と前記二番目のデータの値とを大小比較し、当該大小比較結果による小さい方のデータの値と大小比較して並び替えることを特徴とするマージソート処理プログラム。
JP2008041666A 2008-02-22 2008-02-22 マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム Pending JP2009199439A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008041666A JP2009199439A (ja) 2008-02-22 2008-02-22 マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008041666A JP2009199439A (ja) 2008-02-22 2008-02-22 マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム

Publications (1)

Publication Number Publication Date
JP2009199439A true JP2009199439A (ja) 2009-09-03

Family

ID=41142852

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008041666A Pending JP2009199439A (ja) 2008-02-22 2008-02-22 マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム

Country Status (1)

Country Link
JP (1) JP2009199439A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092469B2 (en) 2012-08-22 2015-07-28 Empire Technology Development Llc Partitioning sorted data sets
CN108959179A (zh) * 2017-05-25 2018-12-07 三星电子株式会社 向量处理器的序列对齐方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63173124A (ja) * 1987-01-13 1988-07-16 Ricoh Co Ltd デ−タの編集方法
JPH02130629A (ja) * 1988-11-11 1990-05-18 Hitachi Ltd 外部ソート算法
JPH08221254A (ja) * 1995-02-16 1996-08-30 Fujitsu Ltd マージソート方法及びマージソート装置
JP2006163565A (ja) * 2004-12-03 2006-06-22 Mitsubishi Electric Corp ソート処理装置及びソート処理方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63173124A (ja) * 1987-01-13 1988-07-16 Ricoh Co Ltd デ−タの編集方法
JPH02130629A (ja) * 1988-11-11 1990-05-18 Hitachi Ltd 外部ソート算法
JPH08221254A (ja) * 1995-02-16 1996-08-30 Fujitsu Ltd マージソート方法及びマージソート装置
JP2006163565A (ja) * 2004-12-03 2006-06-22 Mitsubishi Electric Corp ソート処理装置及びソート処理方法及びプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092469B2 (en) 2012-08-22 2015-07-28 Empire Technology Development Llc Partitioning sorted data sets
US9424331B2 (en) 2012-08-22 2016-08-23 Empire Technology Development Llc Partitioning sorted data sets
CN108959179A (zh) * 2017-05-25 2018-12-07 三星电子株式会社 向量处理器的序列对齐方法
JP2018200692A (ja) * 2017-05-25 2018-12-20 三星電子株式会社Samsung Electronics Co.,Ltd. ベクトルプロセッサの配列ソート方法
JP7241470B2 (ja) 2017-05-25 2023-03-17 三星電子株式会社 ベクトルプロセッサの配列ソート方法
CN108959179B (zh) * 2017-05-25 2023-12-01 三星电子株式会社 向量处理器的序列对齐方法

Similar Documents

Publication Publication Date Title
JP6380952B2 (ja) 多数の要素からなる配列をソートする装置、方法およびプログラム
Lin et al. 1xn pattern for pruning convolutional neural networks
JP2009535747A5 (ja)
JP6300710B2 (ja) 変更影響分析装置及び変更影響分析方法及びプログラム
JP2771683B2 (ja) 並列処理方式
RU2016151387A (ru) Параллельная сортировка слиянием
CN113076312A (zh) 归并树形排序装置、排序系统及排序方法
CN109241490A (zh) 一种面向区块链的x11动态哈希方法及装置
JP2009199439A (ja) マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム
JP5024294B2 (ja) 状態遷移表の情報記憶検索方法と装置およびプログラム
US10514914B2 (en) Method for min-max computation in associative memory
JP2016091488A (ja) データソート方法およびプログラム
KR20150052520A (ko) 셔플 명령어 처리 장치 및 방법
JP4347087B2 (ja) パターンマッチング装置および方法ならびにプログラム
JP2007133576A (ja) ソート処理方法及びプログラム
CN108958702B (zh) 一种排序网络、排序方法及排序装置
WO2009147794A1 (ja) 有限オートマトン生成システム
CN110990349A (zh) 一种智能系统安全体系中的不平衡日志过采样方法
JP2007041199A5 (ja)
JP2021051448A (ja) 情報処理装置、疎行列格納方法及びプログラム
JP2012150562A (ja) N分木内部ノードの圧縮方法及び装置及びプログラム
KR20190139227A (ko) K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법
JP6687700B2 (ja) 情報処理装置、情報処理方法およびプログラム
JPWO2020213165A5 (ja) 順序同型照合装置、順序同型照合方法、及び、プログラム
TW201531994A (zh) 病理資料處理裝置以及方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110628