修正マージソート
日本語 | 修正併合並び替え |
英語 | modified merge sort、modified mergesort |
ふりがな | しゅうせいまーじそーと |
フリガナ | シュウセイマージソート |
分割した要素をマージしていくソート。
ソートのアルゴリズムのひとつ。
最速レベルのソートであり、安定ソートでもある、マージソートをさらに改良したもの。
マージソートと異なり、要素数6以下でのソート(各塊をマージする時も含む)の際には分割・併合処理を行わず特別なソート処理を行う。
また、一般的なマージソートでは分割時に新たな配列を作製してコピーするが、修正マージソートでは配列を2つ用意してそれを交互に使用することで配列の新規作成を行わないようにしている。
これらの修正により、マージソートよりも処理が速くなっている。
Arraysクラスのsort()メソッドでクラスをソートする場合にはこの修正マージソートを使用しているため、Arraysクラスのsort()メソッドを用いたソートはかなり優秀なソートということができる。
ソートのアルゴリズムのひとつ。
最速レベルのソートであり、安定ソートでもある、マージソートをさらに改良したもの。
マージソートと異なり、要素数6以下でのソート(各塊をマージする時も含む)の際には分割・併合処理を行わず特別なソート処理を行う。
また、一般的なマージソートでは分割時に新たな配列を作製してコピーするが、修正マージソートでは配列を2つ用意してそれを交互に使用することで配列の新規作成を行わないようにしている。
これらの修正により、マージソートよりも処理が速くなっている。
Arraysクラスのsort()メソッドでクラスをソートする場合にはこの修正マージソートを使用しているため、Arraysクラスのsort()メソッドを用いたソートはかなり優秀なソートということができる。
参考サイト
// Sample.java
import java.util.Arrays;
public class Sample
{
public static void main( String[] args )
{
// 出力する配列を用意します。
Integer[] intgerss = new Integer[] { new Integer( 300 ), new Integer( 100 ), new Integer( 200 ) };
for( int iF1 = 0; iF1 < intgerss.length; ++iF1 )
{
System.out.print( intgerss[iF1] + ", " );
}
System.out.println();
// 300, 100, 200,
// 修正マージソート機能を使ってみます。
Arrays.sort( intgerss );
for( int iF1 = 0; iF1 < intgerss.length; ++iF1 )
{
System.out.print( intgerss[iF1] + ", " );
}
System.out.println();
// 100, 200, 300,
}
}
import java.util.Arrays;
public class Sample
{
public static void main( String[] args )
{
// 出力する配列を用意します。
Integer[] intgerss = new Integer[] { new Integer( 300 ), new Integer( 100 ), new Integer( 200 ) };
for( int iF1 = 0; iF1 < intgerss.length; ++iF1 )
{
System.out.print( intgerss[iF1] + ", " );
}
System.out.println();
// 300, 100, 200,
// 修正マージソート機能を使ってみます。
Arrays.sort( intgerss );
for( int iF1 = 0; iF1 < intgerss.length; ++iF1 )
{
System.out.print( intgerss[iF1] + ", " );
}
System.out.println();
// 100, 200, 300,
}
}
// Sample.java import java.util.Arrays; public class Sample { public static void main( String[] args ) { // 出力する配列を用意します。 Integer[] intgerss = new Integer[] { new Integer( 300 ), new Integer( 100 ), new Integer( 200 ) }; for( int iF1 = 0; iF1 < intgerss.length; ++iF1 ) { System.out.print( intgerss[iF1] + ", " ); } System.out.println(); // 300, 100, 200, // 修正マージソート機能を使ってみます。 Arrays.sort( intgerss ); for( int iF1 = 0; iF1 < intgerss.length; ++iF1 ) { System.out.print( intgerss[iF1] + ", " ); } System.out.println(); // 100, 200, 300, } }