c++にて分布数えソートテンプレートを作成してみたのですが、どこかにミスがあるようでメモリエラーが出てしまいます。
どこが間違っているかご指摘ください。
C++
1template <typename T> void countingSort(T ary[], const size_t ary_num) { 2 T max = aryMax(ary, ary_num); // 要素の最大値 3 T min = aryMin(ary, ary_num); // 要素の最小値 4 std::vector<int> count(max - min + 1); 5 std::vector<T> copy(ary_num); 6 size_t i; 7 8 std::fill(count.begin(), count.end(), 0); 9 std::fill(copy.begin(), copy.end(), 0); // debug 10 11 for (i = 0; i < ary_num; i++) count[ary[i] - min]++; 12 for (i = 1; i <= max - min; i++) count[i] += count[i - 1]; 13 for (i = ary_num - 1; i >= 0; i--) // ここが怪しい? 14 copy[--count[ary[i] - min]] = ary[i]; 15 for (i = 0; i < ary_num; i++) 16 ary[i] = copy[i]; 17 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/04 17:46
2019/01/04 17:56