Вы не можете доказать , взглянув на время, вы можете только доказать это, проанализировав код, чтобы увидеть, сколько шагов выполнено. Причина этого в том, что затраченное время является функцией не только вашей программы, но и многих других вещей вне вашего контроля.
Например, кто может сказать, не тратит ли ваша машина чрезмерное количество времени на другие процессы во время одного конкретного теста вашей программы? Подобные вещи могут быть сведены к минимуму с помощью статистических методов, но для доказательства требуются надежные данные.
То, что вы можете сделать, - это посмотреть на некоторые из ваших точек данных, чтобы получить поддержку для утверждения, что это O (n 2 ). Посмотрите на последние четыре записи:
Input Time
128 318
256 1274 1274 / 318 = 4.006
512 5059 5059 / 1274 = 3.971
1024 20333 20333 / 5059 = 4.019
Вы можете видеть, что каждое удвоение входного размера имеет эффект умножения времени около 4, что указывает на свойство O (n 2 ).
Но это только поддержка. Он применяется только к этому конкретному диапазону входных значений и, как указано, зависит от факторов, находящихся вне вашего контроля. Также обратите внимание, что поддержку будет сложнее увидеть, если время не будет простым. Например, если бы функция времени была t = <sup>n<sup>2</sup></sup>/<sub>10</sub> + 123n + 123456789
, было бы немного сложнее разобраться.