質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
マージ

複数のデータベースやファイル、プログラムなどを決まった手順や規則に従って一つに結合すること。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

解決済

Javaによるマージソート

meltySAGAWA
meltySAGAWA

総合スコア2

マージ

複数のデータベースやファイル、プログラムなどを決まった手順や規則に従って一つに結合すること。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

2回答

0リアクション

0クリップ

807閲覧

投稿2021/09/28 04:01

前提・実現したいこと

マージソートをしたいです

発生している問題・エラーメッセージ

エラーはなく実行されるのですが、結果がソートされていません
どこを直すべきか教えてください

以下実行結果

{3, 2, 8, 4, 5, 7, 1, 0, 6, 9} // ソート前 {3, 2, 7, 1, 0, 6, 8, 4, 5, 9} // ソート後

該当のソースコード

Java

public class testMeregeSort { private final int n = 10; private int[] a = { 3, 2, 8, 4, 5, 7, 1, 0, 6, 9 }; public testMeregeSort() { } private void mergesort(int low, int high) { int xSize = (high - low + 1) / 2; int ySize = (high + 1) - xSize; int[] x = new int[xSize]; int[] y = new int[ySize]; int[] z = new int[n]; int xIndex = 0; int yIndex = 0; if (high - low + 1 <= 1) { return; } // ここから分割 for (int i = 0; i < xSize; i++) { x[i] = a[i]; } for (int i = 0; i < ySize; i++) { y[i] = a[i + xSize]; } mergesort(0, xSize - 1); mergesort(0, ySize - 1); // ここからマージ while (xIndex < xSize && yIndex < ySize) { if (x[xIndex] <= y[yIndex]) { z[xIndex + yIndex] = x[xIndex]; xIndex++; } else { z[xIndex + yIndex] = y[yIndex]; yIndex++; } } if (xIndex >= xSize) { for (int i = yIndex; i < ySize; i++) { z[i + xIndex] = y[i]; } } else { for (int i = xIndex; i < xSize; i++) { z[i + yIndex] = x[i]; } } for (int i = 0; i < n; i++) { a[i] = z[i]; } } public void sort() { mergesort(0, a.length - 1); for (int i = 0; i < n; i++) { System.out.println(a[i]); } } public static void main(String[] args) { testMeregeSort ms = new testMeregeSort(); ms.sort(); } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

マージ

複数のデータベースやファイル、プログラムなどを決まった手順や規則に従って一つに結合すること。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。