#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void add(int **a, int element, int *size, int index);
int main(void){
int size = 10;
int *a;
int i;
clock_t start, stop;
for (i = 0; i < 100000; i++){
add(&a, i, &size, i);
}
printf("Adding arry by one: %10.2f\n", (double)(stop
- start
));
return 0;
}
void add(int **a, int element, int *size, int index){
if (index < *size){
(*a)[index] = element;
} else {// if (index >= *size){
*a
= realloc(*a
, sizeof(int)*(*size
= index
+ 1)); (*a)[index] = element;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnZvaWQgYWRkKGludCAqKmEsIGludCBlbGVtZW50LCBpbnQgKnNpemUsIGludCBpbmRleCk7CgppbnQgbWFpbih2b2lkKXsKCWludCBzaXplID0gMTA7CglpbnQgKmE7CglhID0gbWFsbG9jKHNpemUqc2l6ZW9mKGludCkpOwoJaW50IGk7CgljbG9ja190IHN0YXJ0LCBzdG9wOwoJc3RhcnQgPSBjbG9jaygpOwoKCWZvciAoaSA9IDA7IGkgPCAxMDAwMDA7IGkrKyl7CgkJYWRkKCZhLCBpLCAmc2l6ZSwgaSk7Cgl9CgoJc3RvcCA9IGNsb2NrKCk7CglwcmludGYoIkFkZGluZyBhcnJ5IGJ5IG9uZTogJTEwLjJmXG4iLCAoZG91YmxlKShzdG9wIC0gc3RhcnQpKTsKCglmcmVlKGEpOwoJcmV0dXJuIDA7Cn0KCnZvaWQgYWRkKGludCAqKmEsIGludCBlbGVtZW50LCBpbnQgKnNpemUsIGludCBpbmRleCl7CglpZiAoaW5kZXggPCAqc2l6ZSl7CgkJKCphKVtpbmRleF0gPSBlbGVtZW50OwoJfSBlbHNlIHsvLyBpZiAoaW5kZXggPj0gKnNpemUpewoJCSphID0gcmVhbGxvYygqYSwgc2l6ZW9mKGludCkqKCpzaXplID0gaW5kZXggKyAxKSk7CgkJKCphKVtpbmRleF0gPSBlbGVtZW50OwoJfQp9