ここでは、0からsizeの範囲の整数でしか動作しない非常に恐ろしいソートアルゴリズムがあります。私は大量のデータセットに対してこのようなアルゴリズムを使用しません。それは、非常に多くのメモリを必要とするため、大きなアルゴリズムを使用します。つまり、このアルゴリズムは技術的にO(n)時間に実行されないでしょうか?O(n)ソートアルゴリズム
おかげ
#include <iostream>
#define size 33
int main(){
int b[size];
int a[size] = {1,6,32,9,3,7,4,22,5,2,1,0};
for (int n=0; n<size; n++) b[n] = 0;
for (int n=0; n<size; n++){
if (size <= a[n]) throw std::logic_error("error");
b[a[n]]++;
}
int x = 0;
for (int n=0; n<size; n++){
for (int t=0; t<b[n]; t++){
a[x] = n;
x++;
}
}
for (int n=0; n<size; n++) printf("%d ",a[n]);
}
実験的に確認できます:P – Borgleader
[Counting_sort](https://en.wikipedia.org/wiki/Counting_sort)をご覧ください。 – Jarod42
かなり可。ここをクリックしてください:https://en.wikipedia.org/wiki/Bucket_sort –