QuickSortパーティションアルゴリズム

人種 :

私はCormen Algorithm Textbookからクイックソートアルゴリズムをプログラムしようとしています。以下は私のコードです。

class Quicksort
{
    public void qSort(int[] a, int p, int r)
    {
        if(p<r)
        {
            int q = Partition(a, p,r);
            qSort(a, p, q-1);
            qSort(a, q+1, r);
        }
     }

     private int Partition(int[] a, int p, int r)
     {
         int x = a[r];

         int i = p-1;
         int temp=0;

         for(int j=p; j<r-1; j++)
         {
             if(a[j]<=x)
             {
                 i++;
                 temp = a[i];
                 a[i] = a[j];
                 a[j] = temp;
             }
         }

         temp = a[i+1];
         a[i+1] = a[r];
         a[r] = temp;
         return (i+1);
     }
}

public class QuickSortTest
{
     public static void main(String[] args)
     {
         Quicksort qsort = new Quicksort();
         int[] array = {5, 4, 7, 2, 1, 9, 3, 6, 10, 8};

         System.out.print("Original  Array : ");
         for(int i=0; i<array.length;i++)
         {
             System.out.print(array[i] + " ");
         }

         int length = array.length;

         qsort.qSort(array, 0, length-1);

         System.out.print("Sorted  Array : ");
         for(int i=0; i<array.length;i++)
         {
             System.out.print(array[i] + " ");
         }
     }
}

しかし、このコードを実行すると、間違った出力が表示されます。

Original  Array : 5 4 7 2 1 9 3 6 10 8 
Sorted  Array : 1 4 5 2 6 7 3 8 9 10 

誰が何が悪いのか説明してもらえますか?「アルゴリズムの概要」の本に記載されているとおりに、このコードを実装しました。ありがとうございました。

ラッセエスペホルト:

いいえ、あなたはそれを直接コピーしていません:)私はここにそれを持っています...

for(int j=p; j<r-1; j++)

する必要があります

for(int j=p; j<r; j++)

または

for(int j=p; j <= r-1; j++)

本は書いています:

for j = p to r - 1

含まれていますr - 1また、本には0ではなく1から始まる配列があることを思い出してください。したがって、一般に、本のアルゴリズムは、細心の注意を払って、または1から始まる配列で「コピー」する必要があります。

編集:コメントのアルゴリズムに関する情報本のアルゴリズムは、最後の要素をピボットとして使用します。したがって、すでにソートされた配列に対しては、それはひどいアルゴリズムになります。配列は多少ソートされる傾向があるため、最終的にはO(n ^ 2)になるため、このアルゴリズムを本番環境で使用することはできません(何をしているか、何を入力しているかを理解していない限り)。Javaの組み込みアルゴリズムはより巧妙で、Javadocで読むことができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パーティションサムアルゴリズム

分類Dev

(QuickSortアルゴリズムの)パーティションメソッドのストア変数は何をしていますか?

分類Dev

Kafkaのパーティション選択アルゴリズム

分類Dev

パーティションと選択を含むアルゴリズム

分類Dev

パーティションの問題ブルートフォースアルゴリズム

分類Dev

リストのすべてのパーティションを順番に生成するアルゴリズム

分類Dev

ベクトル要素は、パーティションアルゴリズムでは交換されません。

分類Dev

ベクトル要素は、パーティションアルゴリズムでは交換されません。

分類Dev

パーティショニングアルゴリズムでサブセットを取得する方法は?

分類Dev

安定したパーティションはどのように適応アルゴリズムですか?

分類Dev

順序付けられたパーティションのセットのアルゴリズム

分類Dev

PHPでパーティションアルゴリズムを実行する方法

分類Dev

アーティキュレーションポイントアルゴリズムの実装

分類Dev

すべてのマルチセットサイズnパーティションを生成するアルゴリズム

分類Dev

最短パスアルゴリズム(A *)の複数のソリューション

分類Dev

再帰的アルゴリズムのセグメンテーション違反

分類Dev

この再帰的パーティションアルゴリズムが空の配列を返すのはなぜですか?

分類Dev

powerofTwoアルゴリズムソリューション

分類Dev

デシジョンツリーアルゴリズムの提案

分類Dev

Minesweaperアルゴリズムソリューション

分類Dev

HTTPアクセプトネゴシエーションアルゴリズム

分類Dev

ページネーション計算アルゴリズム

分類Dev

Pythonのショートパスアルゴリズムの機能ソリューション

分類Dev

ブルームフィルターを使用したハイフネーションアルゴリズム

分類Dev

VEINS:動的再ルーティングアルゴリズム

分類Dev

アルゴリズム交互モーション再帰

分類Dev

異なる部分を持つ整数のパーティション数を取得するための効率的なアルゴリズム(パーティション関数Q)

分類Dev

PhpStorm:アルゴリズムネゴシエーションが失敗する

分類Dev

Excelのような列ヘッダーオプションフィルタリングアルゴリズム

Related 関連記事

  1. 1

    パーティションサムアルゴリズム

  2. 2

    (QuickSortアルゴリズムの)パーティションメソッドのストア変数は何をしていますか?

  3. 3

    Kafkaのパーティション選択アルゴリズム

  4. 4

    パーティションと選択を含むアルゴリズム

  5. 5

    パーティションの問題ブルートフォースアルゴリズム

  6. 6

    リストのすべてのパーティションを順番に生成するアルゴリズム

  7. 7

    ベクトル要素は、パーティションアルゴリズムでは交換されません。

  8. 8

    ベクトル要素は、パーティションアルゴリズムでは交換されません。

  9. 9

    パーティショニングアルゴリズムでサブセットを取得する方法は?

  10. 10

    安定したパーティションはどのように適応アルゴリズムですか?

  11. 11

    順序付けられたパーティションのセットのアルゴリズム

  12. 12

    PHPでパーティションアルゴリズムを実行する方法

  13. 13

    アーティキュレーションポイントアルゴリズムの実装

  14. 14

    すべてのマルチセットサイズnパーティションを生成するアルゴリズム

  15. 15

    最短パスアルゴリズム(A *)の複数のソリューション

  16. 16

    再帰的アルゴリズムのセグメンテーション違反

  17. 17

    この再帰的パーティションアルゴリズムが空の配列を返すのはなぜですか?

  18. 18

    powerofTwoアルゴリズムソリューション

  19. 19

    デシジョンツリーアルゴリズムの提案

  20. 20

    Minesweaperアルゴリズムソリューション

  21. 21

    HTTPアクセプトネゴシエーションアルゴリズム

  22. 22

    ページネーション計算アルゴリズム

  23. 23

    Pythonのショートパスアルゴリズムの機能ソリューション

  24. 24

    ブルームフィルターを使用したハイフネーションアルゴリズム

  25. 25

    VEINS:動的再ルーティングアルゴリズム

  26. 26

    アルゴリズム交互モーション再帰

  27. 27

    異なる部分を持つ整数のパーティション数を取得するための効率的なアルゴリズム(パーティション関数Q)

  28. 28

    PhpStorm:アルゴリズムネゴシエーションが失敗する

  29. 29

    Excelのような列ヘッダーオプションフィルタリングアルゴリズム

ホットタグ

アーカイブ