Mercurial > hg > Papers > 2010 > kent-master
view quicksort_for_ppc/quicksort_test.cbc @ 1:aa09c34b90d3
add quicksort_for_pcc
add sources, figures.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 01 Feb 2010 20:37:36 +0900 |
parents | |
children |
line wrap: on
line source
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<unistd.h> #include"quicksort_test.h" #define STACK_SIZE 10240 extern void quicksort_IF(); void random_initialize(int *v, int size, int min, int max) { int i; int diff = max-min+1; for (i=0; i<size; i++) { v[i] = min+random()%diff; } return; } static void print_array(int *v, int size) { int i; printf("["); for (i=0; i<size; i++) { printf("%s%4d", (i%10==0)? "\n ":" ", v[i]); } printf(" ]\n"); } int *IFv; int IFs; int IFe; void* IFret; void *IFarg; void* IFsp; int IFsize; void starter(int size) { int *target; void *sp; target = (int*)malloc(sizeof(int)*size); if (!target) { perror("malloc"); exit(1); } random_initialize(target, size, 0, 90); sp = malloc(STACK_SIZE); if (!sp) { perror("malloc"); exit(1); } //print_array(target, size); //goto quicksort(target, 0, size-1, exit0, (void*)target); IFv= target; IFs= 0; IFe= size-1; IFret= exit0; IFarg=(void*)target; IFsp= sp; IFsize= STACK_SIZE; quicksort_IF(); printf("bad region\n"); } static int size=100; int main(int argc, char **argv) { unsigned int seed=0; int opt; while ((opt = getopt(argc, argv, "s:n:")) != -1) { switch (opt) { case 's': seed = atoi(optarg); break; case 'n': size = atoi(optarg); break; default: fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]); exit(1); } } srandom(seed); starter(size); return 0; } static int check_sort(int *v, int size) { int i; for (i=0; i<size-1; i++) { if (v[i] > v[i+1]) return 0; } return 1; } void exit0(void *arg) { int b; //print_array(arg, size); b = check_sort(arg, size); if (b) { printf("sorting successful!\n"); exit(EXIT_SUCCESS); } else { printf("sorting failure! \n"); exit(EXIT_FAILURE); } }