ソートアルゴリズムのカウントにおける要素のカウントの減少

火星

擬似コードからカウントソートアルゴリズムを実装しました。擬似コードでは、最後のループC[A[j]]は最初のパスの後でデクリメントしますこれはすべてを右にシフトしていたので、正しい結果を生成するために、最初のパスの前にデバッグとデクリメントを行いました。しかし、それが機能すること以外に理由がわかりません。なぜ、後ではなく前にデクリメントする必要があるのですか。

後でデクリメントしたときの結果は次のとおりです。

10 1 0 6 8 3 2 0 9 4 
0 0 0 1 2 3 4 6 8 9 

そして、私が前にデクリメントしたとき:

10 1 0 6 8 3 2 0 9 4 
0 0 1 2 3 4 6 8 9 10

明らかに、最初はすべてが右にシフトされていたので、すべてを左に移動しましたが、そもそもなぜ正しい位置に配置されないのでしょうか。

int* counting_sort(int A[], int size, int k)
{
    int* B = new int[size];
    int* C = new int[k+1];
    for(int i = 0; i <= k; i++)
        C[i] = 0;
    for(int j = 0; j < size; j++) {
        C[A[j]]++;
    }
    for(int i = 1; i <= k; i++) {
        C[i] += C[i-1];
    }
    //print(C,k+1);
    for(int j = size-1; j >= 0; j--) {
        B[--C[A[j]]] = A[j];
    }
    delete [] C;
    return B;
}
LihO
for(int j = size-1; j >= 0; j--) {
    B[--C[A[j]]] = A[j];
}

と同等です:

for(int j = size-1; j >= 0; j--) {
    int element = A[j];
    int pos = C[element] - 1; 
    B[pos] = element;
    C[element]--;
}

配列を想像してみてください1 0 1これで、要素の数は次のようになります。
0-1回
1-2回

:それらに先行する要素の量によって位置増分カウントの調製
01 -
1- 3

新しい(ソートされた)配列内の要素の位置は(カウント-1)になりました:
位置0= 1 --1 = 0
最初の位置1= 3-1 = 22
番目の位置= 2 --1 1= 1

それを作る0 1 1

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

カウントソートアルゴリズムの実装の問題

分類Dev

マージソートアルゴリズムのスワップ/比較数をカウントする

分類Dev

2つのソートされたリストを比較し、同じ要素の数をカウントするPythonアルゴリズム

分類Dev

行列内の各要素の接続された要素の数をカウントするアルゴリズム

分類Dev

行列内の各要素の接続された要素の数をカウントするアルゴリズム

分類Dev

2つのイベント間に存在するobsの数をカウントするアルゴリズム

分類Dev

カウントダウンアルゴリズムの実行方法

分類Dev

Merge_Sortアルゴリズムの作業をカウントする

分類Dev

範囲アルゴリズム内の数値をカウントする(C ++)

分類Dev

クイックソートアルゴリズムにカウンターを追加して、スワップアクションの総数を表示する

分類Dev

Pythonのマージソートアルゴリズムでスワップをカウントするにはどうすればよいですか?

分類Dev

リンクリスト内の発生をカウントするためのアルゴリズム

分類Dev

カーニハンのビットカウントアルゴリズムの背後にあるロジックを説明してください

分類Dev

SQLServerでのCURSORによるカウント減少の試行

分類Dev

大きなカーディナリティをカウントするためのLogLogおよびHyperLogLogアルゴリズム

分類Dev

AVLツリー内のノード数をカウントするアルゴリズム

分類Dev

バブルソートのようなアルゴリズムを使用して、最初のk-最小要素をソートするためのスワップの数をカウントします

分類Dev

0と1を含むソートされた配列からゼロの数をカウントするためのアルゴリズム。

分類Dev

何が、アルゴリズム解析の比較としてカウント?

分類Dev

ラウンドロビンシードのソートアルゴリズム

分類Dev

要素のカウントを許可しない並べ替えアルゴリズム

分類Dev

RAMに収まらない配列内の重複要素をカウントするための効率的なアルゴリズム

分類Dev

ソートアルゴリズムにおける決定木の分析

分類Dev

「カウントソート」がより広く使用されているアルゴリズムではないのはなぜですか?

分類Dev

間隔内の数値の頻度をカウントするための効率的なアルゴリズム

分類Dev

mochiwebパーサーを使用して画像のサイズをカウントしないアルゴリズム

分類Dev

Ubuntu ソフトウェア センターのカテゴリ

分類Dev

整数グリッドの数をカウントするための効率的なアルゴリズム

分類Dev

トポロジカルソート(カーンのアルゴリズム)トラブル

Related 関連記事

  1. 1

    カウントソートアルゴリズムの実装の問題

  2. 2

    マージソートアルゴリズムのスワップ/比較数をカウントする

  3. 3

    2つのソートされたリストを比較し、同じ要素の数をカウントするPythonアルゴリズム

  4. 4

    行列内の各要素の接続された要素の数をカウントするアルゴリズム

  5. 5

    行列内の各要素の接続された要素の数をカウントするアルゴリズム

  6. 6

    2つのイベント間に存在するobsの数をカウントするアルゴリズム

  7. 7

    カウントダウンアルゴリズムの実行方法

  8. 8

    Merge_Sortアルゴリズムの作業をカウントする

  9. 9

    範囲アルゴリズム内の数値をカウントする(C ++)

  10. 10

    クイックソートアルゴリズムにカウンターを追加して、スワップアクションの総数を表示する

  11. 11

    Pythonのマージソートアルゴリズムでスワップをカウントするにはどうすればよいですか?

  12. 12

    リンクリスト内の発生をカウントするためのアルゴリズム

  13. 13

    カーニハンのビットカウントアルゴリズムの背後にあるロジックを説明してください

  14. 14

    SQLServerでのCURSORによるカウント減少の試行

  15. 15

    大きなカーディナリティをカウントするためのLogLogおよびHyperLogLogアルゴリズム

  16. 16

    AVLツリー内のノード数をカウントするアルゴリズム

  17. 17

    バブルソートのようなアルゴリズムを使用して、最初のk-最小要素をソートするためのスワップの数をカウントします

  18. 18

    0と1を含むソートされた配列からゼロの数をカウントするためのアルゴリズム。

  19. 19

    何が、アルゴリズム解析の比較としてカウント?

  20. 20

    ラウンドロビンシードのソートアルゴリズム

  21. 21

    要素のカウントを許可しない並べ替えアルゴリズム

  22. 22

    RAMに収まらない配列内の重複要素をカウントするための効率的なアルゴリズム

  23. 23

    ソートアルゴリズムにおける決定木の分析

  24. 24

    「カウントソート」がより広く使用されているアルゴリズムではないのはなぜですか?

  25. 25

    間隔内の数値の頻度をカウントするための効率的なアルゴリズム

  26. 26

    mochiwebパーサーを使用して画像のサイズをカウントしないアルゴリズム

  27. 27

    Ubuntu ソフトウェア センターのカテゴリ

  28. 28

    整数グリッドの数をカウントするための効率的なアルゴリズム

  29. 29

    トポロジカルソート(カーンのアルゴリズム)トラブル

ホットタグ

アーカイブ