Ejemplo n.º 1
0
void run_sorts(buf *buf) {
	fill(buf);

	while(1) {
		int r = rand_from(0, 4);

		fisher_yates_shuffle(buf, 0, buf->length-1);

		switch (r) {
		case 0:
			printf("Insertion Sort.\n");
			insertion_sort(buf, 0, buf->length-1);
			break;
		case 1:
			printf("Quick Sort.\n");
			quicksort(buf, 0, buf->length-1);
			break;
		case 2:
			printf("Heap Sort.\n");
			heap_sort(buf, 0, buf->length-1);
			break;
		case 3:
			printf("Selection Sort.\n");
			selection_sort(buf, 0, buf->length-1);
			break;
		case 4:
			printf("Merge Sort.\n");
			merge_sort(buf, 0, buf->length-1);
			break;
		}
	}
}
Ejemplo n.º 2
0
static void
test_reorder (void)
{
  guint n = g_test_perf () ? 1000000 : 100;
  GtkRBTree *tree;
  GtkRBNode *node;
  gint *reorder;
  guint i;
  double elapsed;

  reorder = fisher_yates_shuffle (n);
  tree = create_unsorted_tree (reorder, n);

  g_test_timer_start ();

  _gtk_rbtree_reorder (tree, reorder, n);

  elapsed = g_test_timer_elapsed ();
  if (g_test_perf ())
    g_test_minimized_result (elapsed, "reordering rbtree with %u items: %gsec", n, elapsed);

  _gtk_rbtree_test (tree);

  for (node = _gtk_rbtree_first (tree), i = 0;
       node != NULL;
       node = _gtk_rbtree_next (tree, node), i++)
    {
      g_assert (GTK_RBNODE_GET_HEIGHT (node) == i);
    }
  g_assert (i == n);

  _gtk_rbtree_free (tree);
}
Ejemplo n.º 3
0
Archivo: zscore.c Proyecto: wash/rnaz
void zscore_explicitly_shuffled(const char *seq, double *avg, double *stdv, int type){
    unsigned int n = 1000;
    unsigned int counter;
    unsigned int length = strlen(seq);
    char *tmp = (char *) space((unsigned) length+1);
    char *shuff = (char *) space((unsigned) length+1);
    char *structure = (char *) space((unsigned) length+1);
    float *energies = (float*) space(sizeof(float) * n);
    float mean = 0;
    float sd = 0;
    /* generate seed from time */
    srand((unsigned)time(NULL));
    strcpy(tmp, seq);

    /*printf("INHERE\n");*/
    
    for (counter = 0; counter < n; counter++)
    {
      if (type == 1) fisher_yates_shuffle(tmp,length,shuff);
      if (type == 3) altschul_erickson_shuffle(tmp,length,shuff);
      energies[counter] = fold(shuff, structure);
      free_arrays();
      mean = mean + energies[counter];
    }

    mean = (float) mean/n;
    
    for (counter = 0; counter < n; counter++)
    {
      sd += (energies[counter]-mean)*(energies[counter]-mean);
    }

    sd = (float) sd/(n-1);
    sd = sqrt(sd);

    *avg = (double) mean;
    *stdv = (double) sd;

    free(energies);
    free(tmp);
    free(shuff);
    free(structure);
}
Ejemplo n.º 4
0
void bogo_sort(buf *buf, int low, int high) {
	while (!is_sorted(buf, low, high)) {
		fisher_yates_shuffle(buf, low, high);
	}
}