Beispiel #1
0
int main(int argc, char **argv)
{
	redcord_t d[SIZE] = {{1, "one"}, {3, "three"}, {2, "two"}, {-9, "neg-nine"},\
			{28, "twenty-eight"}, {-100, "neg-hundred"}, {44, "forty-four"},\
			{0, "zero"}, {12, "twelve"}, {99, "gogo"}, {28, "gona"}, {0, "home"},\
			{-1, "bit"}, {-9, "44"}, {8, "99"}, {3, "ff"}, {5, "lk"}, {11, "wish"}};
	sq_list L;
	char ch_sel;
	int i = 0;
	int incre[INCRE_SIZE] = {4, 3, 1};	//increasement for shell sorting
	struct timeval time_start;
	struct timeval time_end;


	for (i = 1; i < SIZE + 1; i++)
	{
		L.data[i] = d[i - 1];
	}
	L.length = SIZE;
	printf("initial sq_list:\n");
	display(L);
	printf("Input sorting mode(y:ascend or n:descend):");
	while (1 != scanf("%c%*c", &ch_sel) && ch_sel != EOF)
	{
		while (getchar())
		{
			;
		}
	}
	if (ch_sel == 'y' || ch_sel == 'Y')
	{
		gettimeofday(&time_start, NULL);
		shell_sort(&L, incre, INCRE_SIZE, ASCEND);
		gettimeofday(&time_end, NULL);
		printf("shell sorting result:(time = %lfs)\n", TIME_INTERVAL(time_start, time_end));
		display(L);
	}
	else if (ch_sel == 'n' || ch_sel == 'N')
	{
		gettimeofday(&time_start, NULL);
		shell_sort(&L, incre, INCRE_SIZE, DESCEND);
		gettimeofday(&time_end, NULL);
		printf("shell sorting result:(time = %lfs)\n", TIME_INTERVAL(time_start, time_end));
		display(L);
	}
	else
	{
		printf("Invalid Input!\n");
	}
	return 0;
}
char *word_default(void)
{
	dict_elem_t *head_p;
	int total;

	dict_elem_t *elem_fund;
	total = get_elem_count("dict.txt");
			
	head_p = malloc(total * sizeof(*head_p));

	head_p = read_to_mem_from_txt("dict.txt", head_p, total);
	shell_sort(head_p, 0, total-1);

	printf("\n\t\t\tWelcome enjoy this dictionary\n\n");
	printf("input you word ,exit is quit...  \n");
	while(1) {
		elem_fund = search(head_p, total); //退出,说明没找到,继续找
		if (elem_fund == NULL) {
			//add_ne
			continue;
		}
		else if ((unsigned)elem_fund == 1) {
			distory(head_p, total);
			return (char *) 1;
		} else if ((unsigned)elem_fund == 2) {
			puts("error");
			distory(head_p, total);
			return (char *)2;
		} else {
			print_one_elem(elem_fund);
		}
	}
		
}
int main ()
{
	int i, n;
	int *polje;
	
	do {
		printf ("Unesi velicinu polja: ");
		scanf ("%d", &n);
	} while (n<=0);

	if ((polje = malloc (n * sizeof (int))) == NULL) {
		fprintf (stderr, "Ne mogu alocirati polje");
		exit (1);
	}
	
	srand ((unsigned) time (NULL));
	
	printf ("Generiram polje...\n");
	for (i=0 ; i<n ; ++i)
		polje[i] = rand () % 1000;

	printf ("Sortitam polje...\n");
	shell_sort (polje, n);
	
	/* ispisi sortirano polje */
	for (i=0 ; i<n ; i++)
		printf ("%d ", polje[i]);

	printf ("\n");
	
	return 0;
}
Beispiel #4
0
void shell_insertion_sort(elem_t *a, const int start, const int end) {
	int gap = end - start;
	while(gap > 1) {
		gap = gap / 3 + 1;
		shell_sort(a, start, end, gap);
	}
}
Beispiel #5
0
int main( int argc, char * argv[] )
{
    int pid = getpid();
    sprintf( fn, "/proc/%d/stat", pid );
    
    data = malloc( 590000000L * sizeof(int) );
    setbuffer(stdout, NULL, 0);

    FILE * fp;
    fp = fopen("result.txt", "w");
    setbuffer(fp, NULL, 0);
    
    unsigned long i, j, n;
    double t[100][50];
    for ( i = 1<<17, n = 0; i <= (1<<27); i <<= 1, n++ )
    {
        printf("%d:", i);
        for ( j = 0; j < 20; ++j )
        {
            t[n][j] = shell_sort( data, i );
            
            if ( j != 0 ) printf("\b\b");
            printf( "%.2d", j );
            
            fprintf(fp, "%.3f ", t[n][j]);
        }
        putchar('\n');
        fputc('\n', fp);
    }
    free(data);

    return 0;
}
Beispiel #6
0
int main(void) {
	int len = 50, array[len], backup[len];	
	random_int_array(array, len, 100);
	for(int i = 0; i < len; i++) { backup[i] = array[i]; }
	int_array_output(array, len);
		
	// insert_sort(array, len);
	
	shell_sort(array, len);
	int_array_output(array, len);
	
	int idx = binary_search(array, len, 10);
	printf("%d \n", idx);
	/*
	if(in_array(array, backup, len) == false) {
		printf("Fail in test \n");
	}
	*/
	if(assert_int_array_increasing(array, len) == false) {
		printf("Fail in test \n");
	}
	int a = 2, b = 3;
	printf("(%d + %d) / 2 = %d \n", a, b, (int)floor((a + b) / 2.0));
	return 0;
}
Beispiel #7
0
int main(int argc, char *argv[]) {
  
    /* Benytter en pointer for å lage en referanse til vår allokerte data.*/

    int *a;
        int i;
      
    /* samme som array = new int[length]; i c++. Allokerer plass til et array i minnet.
    * størrelsen på denne plassen bestemmes av lengden på input(minus en, fordi første
    * tegn i argc er navnet), * størrelse av int's, funnet av sizeof. Sizeof
    * returnerer størrelsen i bytes. Det som kan er forvirrende ved denne setningen er
    * hvorfor man må gjøre det på slik måte. Først og fremst er det mulig å bare skrive
    * int a[length]; men i C er et array egentlig bare en pointer til del i minnet. Så
    * i vårt tilfelle har vi laget en pointer med "int *a" og deretter forteller vi i den
    * påfølgende setningen at vi vil reservere plass i minnet, plassen vi reserverer baseres
    * hvilket filsystem som benyttes */

        a = (int*) malloc((argc - 1) * sizeof(int));
  
        for (i = 0; i < argc - 1; i++){
             *(a+i) = atoi(argv[i + 1]);
         }
        shell_sort(a, argc - 1);
   
       for (i = 0; i < argc - 1; i++)
            printf("%d ", a[i]);
        printf("\n");
   
    /* Det er viktig å benytte free for å fjerne variabler fra minnet vi ikke
    * lenger har behov for. Pointers mister referansen og Computeren vet ikke
    * om vi trenger dem mer. */
        free(a);
        return 0;
}
Beispiel #8
0
VArray *
sortVerticesDegreeDesc(VArray *va, UInt *d)
{
    shell_sort(va->array, va->length, 
                sizeof(Vertex), d, &vertex_compare_desc);
    return va;
}
int main(int argc,char *argv[])
{
	int N=atoi(argv[1]);
	item_t *array=malloc(N*sizeof(*array));
	item_t *array_2=malloc(N*sizeof(*array_2));
	int i;
	FILE *input;
	clock_t c1,c2;

	input=fopen("merged_sequence.dat","r");
	
	srand((unsigned)time(NULL));

	for(i=0;i<N;i++){
		array[i]=rand()%N;
	}

	copy_array(array_2,array,N);

	while(fgets(buffer,BUFFER_SIZE,input) != NULL){
		copy_array(array,array_2,N);
	
		c1=clock();
		shell_sort(array,0,N-1);
		c2=clock();
	
		printf("sequence: %s",buffer);
		printf("sort time: %fs\n\n",(double)(c2-c1)/CLOCKS_PER_SEC);
	}

	return(0);
}
Beispiel #10
0
/**
 * Check multiple rectangles and combine them to give one paragraph
 * for all text detected from rectangles
 */
char *paraof_ocrtext(struct cc_subtitle *sub)
{
	int i;
	int len = 0;
	char *str;
	struct cc_bitmap* rect;

	shell_sort(sub->data, sub->nb_data, sizeof(struct cc_bitmap), compare_rect_by_ypos, NULL);
	for(i = 0, rect = sub->data; i < sub->nb_data; i++, rect++)
	{
		if(rect->ocr_text)
			len += strlen(rect->ocr_text);
	}
	if(len <= 0)
		return NULL;
	else
	{
		str = malloc(len+1);
		if(!str)
			return NULL;
		*str = '\0';
	}

	for(i = 0, rect = sub->data; i < sub->nb_data; i++, rect++)
	{
		strcat(str, rect->ocr_text);
		freep(&rect->ocr_text);
	}
	return str;
}
int main()
{
    int select, size, *test;
    while (select = menu())
    {
        size = get_integer("Array size");
        while(size <= 0)
            size = get_integer("Array size must bigger then zero");

        test = init_array(test, size);

        printf("Before sort:\n");
        print_array(test, size);
        switch (select) {
            case 1:
                insertion_sort(test,size);
                break;
            case 2:
                shell_sort(test, size);
                break;
            case 3:
                heap_sort(test, size);
                break;
            case 4:
                merge_sort(test, size);
                break;
            case 5:
                quick_sort(test, size);
                break;
        }
        printf("After sort:\n");
        print_array(test, size);
    }
   return 0;
}
Beispiel #12
0
void main()
{
	int *array;
	int i, N;

	setlocale(LC_ALL, "Russian");

	printf("Введите размер массива: ");
	scanf("%d", &N);

	array = (int *) malloc(N * sizeof(int));

	filling_array(array, N);

	printf("Исходный массив: ");
	for (i=0; i<N; i++)
		printf("%d ", array[i]);

	shell_sort(array, N);

	printf("\n\n");
	printf("Отсортированный массив: ");
	for (i=0; i<N; i++)
		printf("%d ", array[i]);

	free(array);
	array = NULL;

	_getch();
}
Beispiel #13
0
Datei: map.c Projekt: qyh/studio
/**
 * Put key and value to map 
 */
void map_put(Map * ptr, const char * key, const char * value)
{
    if (key == NULL || value == NULL)
        return;
    /* search for key */
#if 1
    if (ptr->length != 0){
        MapNode * keyNode = (MapNode *)New(sizeof(MapNode));
        keyNode->key = string_new(key);
        printf("search..%s\n", key);
        int iret = binary_search(ptr->data, ptr->length, keyNode,
            sizeof(MapNode), &MapNodeCmp);
        printf("search..end %d\n", iret);
        if (iret != -1) {
            printf("copy..\n");
            (ptr->data + iret)->value->copy((ptr->data + iret)->value, value);
            printf("copy..end\n");
            keyNode->key->destory(keyNode->key);
            free(keyNode);
            return;
        } 
        keyNode->key->destory(keyNode->key);
        free(keyNode);
    }
#endif
    /* put into map */
    if (ptr->length >= ptr->capacity) {
        ptr->data = (MapNode *)realloc(ptr->data, sizeof(MapNode) * ((ptr->capacity + 1) * 2));
        ptr->capacity = (ptr->capacity + 1) * 2;
    }
    (ptr->data + ptr->length)->key = string_new(key);
    (ptr->data + ptr->length)->value = string_new(value);
    ptr->length += 1;
    shell_sort(ptr->data, ptr->length, sizeof(MapNode), &MapNodeCmp);
}
Beispiel #14
0
void main()
{
     int op;
     clrscr();
     do
     {

	printf("\n1:Insertion Sort\t2:Radix Sort\t3:Shell Sort\t4:Display\t5:Exit\n");
	printf("Enter the option");
	scanf("%d",&op);
	switch(op)
       {
	  case 1:insertion_sort();
		  break;
	  case 2:radix_sort();
		break;
	  case 3:shell_sort();
		     break;
	  case 4:display();break;
	  case 5:exit();
		break;
       }

     }
     while(op);
    getch();
}
Beispiel #15
0
int main() {
    int v[11] = {1, 6, 39, 23, 56, 49, 50, 38, 10, 8, 66};
    shell_sort(v, 10);
    for(int i=0; i<10; i++) {
        printf("%d", v[i]);
        printf("%c", i == 9 ? '\n' : ',');
    }
    return 0;
}
Beispiel #16
0
void
sort ()
{
  size_t *oldlist, i;
  oldlist = xmalloc (msgset.count * sizeof (*oldlist));
  memcpy (oldlist, msgset.list, msgset.count * sizeof (*oldlist));

  switch (algorithm)
    {
    case ARG_QUICKSORT:
      qsort(msgset.list, msgset.count, sizeof(msgset.list[0]),
	    comp);
      break;

    case ARG_SHELL:
      shell_sort();
      break;
    }

  switch (action)
    {
    case ACTION_LIST:
      for (i = 0; i < msgset.count; i++)
	list_message (msgset.list[i]);
      break;

    default:
      /* Install signal handlers */
      signal (SIGINT, sighandler);
      signal (SIGQUIT, sighandler);
      signal (SIGTERM, sighandler);
      
      if (verbose)
	fprintf (stderr, _("Transpositions:\n"));
      for (i = 0, got_signal = 0; !got_signal && i < msgset.count; i++)
	{
	  if (msgset.list[i] != oldlist[i])
	    {
	      size_t old_num, new_num;
	      mu_message_t msg;

	      mu_mailbox_get_message (mbox, oldlist[i], &msg);
	      mh_message_number (msg, &old_num);
	      mu_mailbox_get_message (mbox, msgset.list[i], &msg);
	      mh_message_number (msg, &new_num);
	      transpose (i, oldlist[i]);
	      if (verbose)
		fprintf (stderr, "{%s, %s}\n",
			 mu_umaxtostr (0, old_num),
			 mu_umaxtostr (1, new_num));
	      if (action == ACTION_REORDER)
		swap_message (old_num, new_num);
	    }
	}
    }
}
Beispiel #17
0
main()
{
  int i; 
  int list[N] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
  shell_sort(list, N);
  printf("排序結果為:");
  for(i = 0; i < N; i++)
    printf("%d ", list[i]);
  getchar();  
}
Beispiel #18
0
int main( ) {
    int a[] = {6, -2, 3, 5, 7, 4, 3, 10, -1, 8};
    
    shell_sort(a, 10);
    
    for (int i = 0; i < 10; i++)
        std::cout << a[i] << " ";
        
    return 0;
}
Beispiel #19
0
int main(){
    int i;
    int a[11] = {9, 20, 5, 4, 3, 55, 34, 4, 1, 11, 2};
    
    shell_sort(a, 11);
    for(i = 0; i < 11; i++){
        printf("%d番目の値: %d\n", i, a[i]);
    }
    
    return 0;
}
Beispiel #20
0
int main() {
    n=1000000;
    printf("\n N= %d\n\n",n);

    random();
    time1=clock();
    qsort(a, n, sizeof(int), cmpfunc);
    time2=clock();
    printf("\n qsort, standart:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);

    random();
    time1=clock();
    shell_sort();
    time2=clock();
    printf("\n Shell sort:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);

// Medium Sort
    n=100000;
    printf("\n\n N= %d\n\n",n);

    random();
    time1=clock();
    quickSort(a,0,n-1);
    time2=clock();
    printf("\n QuickSort:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);

// Slooooooooooooooow Sort
    n=30000;
    printf("\n\n N= %d\n\n",n);

    random();
    time1=clock();
    bubble_sort();
    time2=clock();
    printf("\n Bubble sort:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);

    random();
    time1=clock();
    insertion_sort();
    time2=clock();
    printf("\n Insertion sort:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);

    random();
    time1=clock();
    selection_sort();
    time2=clock();
    printf("\n Selection sort:\n Time: %f   s\n",(double)(time2-time1)/CLOCKS_PER_SEC);



    printf("\n");
    return 0;
}
Beispiel #21
0
int main (void)
{
    int arr[10] = {4, 2, 1, 5, 9, 4, 0, 3, 8, 7};
    int i;
    shell_sort(arr, 10);
    for (i = 0; i < 10; i++)
    {
        printf("%4d", arr[i]);
    }
    putchar('\n');
    return 0;
}
Beispiel #22
0
int
main()
{
    int nums[] = {2, 4, 3, 1, 5, 9, 10, 8, 7, 6};
    int len = arr_len(nums);

    print_arr(nums, len);
    shell_sort(nums, len);
    print_arr(nums, len);

    return 0;
}
Beispiel #23
0
int main(int argc, char *argv[])
{
	int i;
	int a[] = {88, 6, 1, 9, 4, 1, 45, 21};

	shell_sort(a, LEN(a));

	for(i = 0; i < LEN(a); i++)
		printf("%d ", a[i]);
	printf("\n");

	return 0;
}
Beispiel #24
0
int main(int argc, char** argv) {

    if(argc != 3)
    {
        exit(INCORRECT_NUMBER_OF_COMMAND_LINE_ARGUMENTS);
    }
    
    FILE* fp1 = fopen(argv[1], "r+");
    FILE* fp2 = fopen(argv[2], "r+");
    
    /*Error check for a null file pointer*/
    if(fp1 == NULL || fp2 == NULL)
    {
        exit(FILE_FAILED_TO_OPEN);
    }
    
    Vector vec1;
    Vector vec2;
    
    vec1 = parse_ints(fp1);
    vec2 = parse_ints(fp2);

    shell_sort(&vec1, vec1.size);
    shell_sort(&vec2, vec2.size);
    
    compare(vec1, vec2, vec1.size, vec2.size);
    
    free(vec1.data);
    free(vec2.data);

    fclose(fp1);
    fclose(fp2);
    
    if(fp1->_ptr != NULL || fp2->_ptr != NULL)
    {
        exit(FILE_FAILED_TO_CLOSE);
    }
    return (EXIT_SUCCESS);
}
Beispiel #25
0
void Sort::insertSort_Shell(RecType *R, int n)
{
    traverseArray(R,n);
    //初始增量
    int d = n/2;
    //增量大于1
    while (d >= 1)
    {
        shell_sort(R, d, n);
        d = d/2;
    }
    traverseArray(R,n);
}
Beispiel #26
0
int main()
{

	int a[MAXN];
	int cnt;
	rand_data(a, MAXN);
	printf("befor:\n");
	print(a, MAXN);
	cnt = shell_sort(a, MAXN);
	printf("after shell sort, %d times\n", cnt);
	print(a, MAXN);
	return 0;
}
Beispiel #27
0
 void main()
 {
     int arr[size], i;
     printf("Enter the elements to be sorted:");
     for (i = 0;i < size;i++)
     {
         scanf("%d", &arr[i]);
     }
     shell_sort(arr);
     printf("The array after sorting is:");
     for (i = 0;i < size;i++)
     {
         printf("\n%d", arr[i]);
     }
 }
Beispiel #28
0
int main(int argc, char *argv[])
{
	int i = 0;
	int *a = NULL;
	
	a = (int *)malloc((argc - 1) * sizeof(int));
	for (i = 0; i < argc - 1; i++)
	a[i] = atoi(argv[i + 1]);

	shell_sort(a, argc);
	
	for (i = 0; i < argc - 1; i++)
	printf("%d ", a[i]);
	printf("\n");

	free(a);
	return 0;
}
Beispiel #29
0
int main( int argc, char * argv[] )
{
    int pid = getpid();
    sprintf( fn, "/proc/%d/stat", pid );
    
    data = malloc( 100000000LL * sizeof(int) );

    FILE * fp = fopen( "in.dat", "r" );
    int i;
    //for ( i = 0; i < 1000000; ++i )
    //    fscanf( fp, "%d", &data[i] );
    
    double t = shell_sort( data, 100000000 );
    printf( "%f", t );

    free(data);
    return 0;
}
Beispiel #30
0
int main(void)
{
	int arr[NUM_COUNT] = {0};
	int i, count;

	struct timeval start, end;
	int used_time;
	
	FILE *in_file, *out_file;

	if((in_file = fopen("rand_num.txt","r")) == NULL)
	{
		printf("error:open the input file failed!\n");
		exit(1);
	}
	if((out_file = fopen("sort_num.txt","w+")) == NULL)
	{
		printf("error:open the input file failed!\n");
		exit(1);
	}

	count = NUM_COUNT;

	for(i = 0; i < count; i++)
	{
		fscanf(in_file, "%d", &arr[i]);
	}

	gettimeofday(&start, NULL);
	shell_sort(arr,count);
	gettimeofday(&end, NULL);

	used_time = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;
	printf("The shell sort time: %d us\n",used_time);

	for(i = 0; i < count; i++)
	{
		fprintf(out_file, "%d ", arr[i]);
	}

	fclose(in_file);
	fclose(out_file);
	return 0;
}