Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <sys/time.h>
- #include <math.h>
- double microsegundos() {
- struct timeval t;
- if (gettimeofday(&t, NULL) < 0 )
- return 0.0;
- return (t.tv_usec + t.tv_sec * 1000000.0);
- }
- void ordenacionPorInsercion (int v[],int n) {
- int i;
- int j;
- int x;
- for (i = 1; i <= n - 1; i++) {
- x = v[i];
- j = i - 1;
- while (j > -1 && v[j] > x) {
- v[j + 1] = v[j];
- j = j - 1;
- }
- v[j + 1] = x;
- }
- }
- void inicializar_semilla() {
- srand(time(NULL));
- }
- void aleatorio(int v [], int n) {/* se generan números pseudoaleatorio entre -n y +n */
- int i, m=2*n+1;
- for (i=0; i < n; i++)
- v[i] = (rand() % m) - n;
- }
- void ascendente(int v [], int n) {
- int i;
- for (i=0; i < n; i++)
- v[i] = i;
- }
- void descendente(int v [], int n){
- int i;
- int j;
- for (i=0; i < n; i++) {
- j = 10 - i;
- v[i] = j;
- }
- }
- void test(int a[], int tamano){
- int i;
- aleatorio(a,tamano);
- for(i=0;i<tamano;i++){
- printf("%d ",a[i]);
- }
- printf("\n");
- ordenacionPorInsercion(a,tamano);
- for(i=0;i<tamano;i++){
- printf("%d ",a[i]);
- }
- }
- int main() {
- int k;
- double t1, t2, t, x, y, z;
- int cont;
- int n;
- inicializar_semilla();
- int tamano = 500;
- int a[tamano];
- descendente(a, tamano);
- t1 = microsegundos();
- ordenacionPorInsercion(a, tamano);
- t2 = microsegundos();
- t = t2 - t1;
- if (t < 500) {
- t1 = microsegundos();
- for (k = 0; k <= 100; k++) {
- ordenacionPorInsercion(a, tamano);
- }
- t2 = microsegundos();
- t = (t2 - t1) / k;
- }
- for (cont = 1; cont <= 3; cont++) {
- for (n = 500; n <= 32000; n = n * 2) {
- inicializar_semilla();
- int b[n];
- aleatorio(b,n);
- t1 = microsegundos();
- ordenacionPorInsercion(b,n);
- t2 = microsegundos();
- t = t2 - t1;
- x = t / pow(n,1.8);
- y = t / pow(n,2);
- z = t / pow(n, 2.2);
- printf("%12d%15.3f%15.6f%15.6f%15.6f\n", n, t, x, y, z);
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement