コード例 #1
0
ファイル: count_sort.c プロジェクト: njdragonfly/CLRS
int main()
{
	int a[]={1,2,6,2,3,6,3,4,5,9,6,2,8,9,3,5,3,6,3,2};
	count_sort(a,sizeof(a)/sizeof(int));
	print_int_array(a,0,sizeof(a)/sizeof(int)-1);
	return 0;
}
コード例 #2
0
int main() {
  int list_to_sort[5] = {1000, 2, 3, 7, 50};
  count_sort(list_to_sort, 5);
  printf("%d", list_to_sort[0]);
  printf("%d", list_to_sort[1]);
  printf("%d\n", list_to_sort[2]);

}
コード例 #3
0
/*
 * 基数排序
 *
 * 参数说明:
 *     a -- 数组
 *     n -- 数组长度
 */
void radix_sort(int a[], int n)
{
    int exp;	// 指数。当对数组按各位进行排序时,exp=1;按十位进行排序时,exp=10;...
    int max = get_max(a, n);	// 数组a中的最大值

	// 从个位开始,对数组a按"指数"进行排序
    for (exp = 1; max/exp > 0; exp *= 10)
        count_sort(a, n, exp);
}
コード例 #4
0
ファイル: mylib.c プロジェクト: zerone7/algorithms
void radix_sort(int array[], int length)
{
	int i;

	for(i=1; i<5; i++)
	{
		count_sort(array, length, i);
	}
}
コード例 #5
0
int main(int argc, char** argv) {
  int vector[VECTOR_SIZE];

  init_vector(vector);

  count_sort(vector, VECTOR_SIZE);

  return 0;
}
コード例 #6
0
ファイル: count.c プロジェクト: linhaidong/algorithm
int main()
{
    //int a[] = {5,4,9,8,7,6,3,2,1};
    //int a[] = {5,4,9,5,4,5};
    int a[] = {8,8,8,8,5,5,5,5,5,5};
    int len = sizeof(a)/sizeof(int);
    print(a, len);
    count_sort(a, len);
    print(a, len);
}
コード例 #7
0
ファイル: count_sort.c プロジェクト: wokaokeji/IA
int main()
{
	int src_array[] = {5,4,5,1,3,2,8,4,2,5,6,1,5,6,9,1,5,4,8};
	//int src_array[] = {1,3,5,7,9,8,6,4,2,0};
	int len = sizeof(src_array)/sizeof(src_array[0]);
	int *dst_array = calloc(len, sizeof(int));	
	disp_array(src_array, len);
	count_sort(src_array, dst_array, len, 20);
	disp_array(dst_array, len);
	free(dst_array);	
	return 0;
}
コード例 #8
0
    void radix_sort(std::vector<int>& nums)
    {
        int max_n = INT_MIN;
        for(int n : nums)
        {
            max_n = std::max(max_n, n);
        }

        for(int nd=1; max_n/nd>0; nd*=10)
        {
            count_sort(nums, nd);
        }
    }
コード例 #9
0
ファイル: sort2.c プロジェクト: anyaevostinar/parallelclass
int main() {
  int n=100000;
  int i;
  int list_to_sort[n];
  for (i=0; i<n; i++){
    list_to_sort[i] = rand();
  }
  double start = omp_get_wtime();
  count_sort(list_to_sort, n);
  double end = omp_get_wtime();
  double diff = end-start;
  printf("elapsed process CPU time = %f seconds\n", diff);
  //  printf("%d ", list_to_sort[0]);
  //printf("%d ", list_to_sort[1]);

}
コード例 #10
0
ファイル: 6th_lab.c プロジェクト: Jaskamalkainth/C-Programs
void radix_sort()
{
	int i , l;
	int mx_len  = 0;
	for(i = 0; i < num_words;i++)
	{
		int temp_len = strlen(words[i].str);
		if(temp_len > mx_len )
			mx_len = temp_len;
	}
	update_dup_str(mx_len);
	//	puts("inside radix_sort");
	//	print_words();
	//	printf("%mx_len = %d\n",mx_len);

	for(l = mx_len-1; l >= 0; l--)
	{
		count_sort(l);
	}
}
コード例 #11
0
void radix_sort()
{
	int i,j;
	int l=0;
	for(i=0; i<ind; i++)
	{
		len[i] = strlen(all_words[i].word);
		if(l<len[i])
			l = len[i];
	}

	for(i=0;i<ind; i++)
	{
		for(j=len[i]; j<=l; j++)
			all_words[i].word[j] = '\0';
	}

	for(i=l-1; i>=0; i--)
		count_sort(i);

	return;
}
コード例 #12
0
ファイル: sort.cpp プロジェクト: heiyanbin/cpp_projects
void testSort()
{
    int x[] = {7,3,4,8,8,5,1,2,4};
    int a[9];
    printArray(x,9);
    
    memcpy(a,x,sizeof(int)*9);
    cout<<"merge sort:"<<endl;
    merge_sort(a, 0, 8);
    printArray(a, 9);

    memcpy(a,x,sizeof(int)*9);
    cout<<"fast sort:"<<endl;
    fast_sort(a, 0, 8);
    printArray(a, 9);

    memcpy(a,x,sizeof(int)*9);
    cout<<"bubble sort:"<<endl;
    bubble_sort(a, 9);
    printArray(a, 9);

    memcpy(a,x,sizeof(int)*9);
    cout<<"select sort:"<<endl;
    select_sort(a, 9);
    printArray(a, 9);

    memcpy(a,x,sizeof(int)*9);
    cout<<"insert sort:"<<endl;
    insert_sort(a, 9);
    printArray(a, 9);

    memcpy(a,x,sizeof(int)*9);
    cout<<"count sort:"<<endl;
    count_sort(a, 9);
    printArray(a, 9);
}
コード例 #13
0
int main()
{
int a[]={387,532,657,876,333,446,789,235,127,981};
int b[10];
int i,k;
int d=3;
for(i=1;i<=d;i++)
{
	for(k=0;k<10;k++)
	{
		b[k]=a[k]/(int)(pow(10,i-1));
	}
	for(k=0;k<10;k++)
	{
		b[k]=b[k]%10;
	}
	for(k=0;k<10;k++)
	printf("%d ",b[k]);
	printf("\n");
	count_sort(a,b,10);
}
for(i=0;i<10;i++)
	printf("%d ",a[i]);
}
コード例 #14
0
ファイル: main.c プロジェクト: bysun2013/algorithm
/**
    @d the highest digit in sorted array
    @radix the radix of sorted array, in general it's ten
*/
void radix_sort(int arr[], int len, int radix, int d){
    int i,j;
    int* sorted=malloc(sizeof(int)*len);
    int* tmp;
    for(i=1;i<=d;i++){
        count_sort(arr, sorted, len, radix, i);
        tmp=arr;
        arr=sorted;
        sorted=tmp;
    }

    printf("\nafter radix sort:\n");
	for(j=1;j<=len;j++){
		printf("%d\t",arr[j]);
	}

/**
    here because allocated memory is swapped,
    there is no clue which is the real memory

    free(sorted);
*/

}
コード例 #15
0
ファイル: count_sort.c プロジェクト: simondchen/codebase
int main(void){
	int A[11] = {10,3,5,1,9,17,8,16,5,2,1};
	int i;
	count_sort(A,20);
	printarray(A,11);
}
コード例 #16
0
ファイル: sort.c プロジェクト: freexiaoyao/test
void main(void) {
    int *dest;

    dest = (int *)malloc(sizeof(unsorted));

    //bubble
    restore_element(dest, LEN);
    print_element(dest, LEN);
    bubble_sort(dest, LEN);
    printf("bubble sorted done!\n");
    print_element(dest, LEN);

    //select
    restore_element(dest, LEN);
    print_element(dest, LEN);
    select_sort(dest, LEN);
    printf("select sorted done!\n");
    print_element(dest, LEN);

    //insert
    restore_element(dest, LEN);
    print_element(dest, LEN);
    insert_sort(dest, LEN);
    printf("insert sorted done!\n");
    print_element(dest, LEN);

    //merge
    restore_element(dest, LEN);
    print_element(dest, LEN);
    merge_sort(dest, LEN);
    printf("merge sorted done!\n");
    print_element(dest, LEN);

    //quick
    restore_element(dest, LEN);
    print_element(dest, LEN);
    quick_sort(dest, LEN);
    printf("quick sorted done!\n");
    print_element(dest, LEN);

    //rquick
    restore_element(dest, LEN);
    print_element(dest, LEN);
    rquick_sort(dest, LEN);
    printf("r-quick sorted done!\n");
    print_element(dest, LEN);

    //count
    restore_element(dest, LEN);
    print_element(dest, LEN);
    count_sort(dest, LEN);
    printf("count sorted done!\n");
    print_element(dest, LEN);

    //radix
    restore_element(dest, LEN);
    print_element(dest, LEN);
    radix_sort(dest, LEN);
    printf("radix sorted done!\n");
    print_element(dest, LEN);

    free(dest);
}
コード例 #17
0
ファイル: assignment1.c プロジェクト: ckelkar/DAA
/*displays menu, gets input from user and 
selects sorting function according to user choice
and handles program for invalid user inputs*/
int main()         		
{				   
	int choice,size,i,r;
	int *input;

	do{
		printf("\n1.Insertion Sort\n2.Counting Sort\n3.Merge Sort\n4.Randomized Quick Sort\n5.Exit");
		printf("\nEnter your Choice");
		scanf("%d",&choice);
		if(choice<=0 || choice>5){
			printf("Invalid choice: ");
			exit(0);
		}

		if(choice==5)
			exit(0);

		printf("\nEnter size: ");
		scanf("%d",&size);

		if(size<1 || size >1000){
			printf("\nNot in range\n");
			exit(0);
		}

	
		input=malloc(size*sizeof(int)); //allocates input array dynamically

		if(choice==2 && size >20){
			for(i=0;i<size;i++)
				input[i]=rand() %100+0;
		}else if(size <= 20){	
			for(i=0;i<size;i++)
				input[i]=rand() %16+0;
			flag=1;
		}else{
			for(i=0;i<size;i++)
			input[i]=rand();
		}
	
	printf("\nRandomly generated elements are\n");
	for(i=0;i<size;i++)
	printf("%d\t",input[i]);

	if(flag==1){
		//printf("\n\nGraphical representation of data\nInitial array\n");
		//animation(input,0,size);
	}
	
	switch(choice){ //selects sorting algorithm according to user choice 
	case 1:insertion_sort(input,size);
		break;
	case 2:count_sort(input,size);
		break;
	case 3:merge_sort(input,size);
		printf("\n\nsorted elements are:\n ");
			
    		for(i=0;i<size;i++)
         		printf("%d\t",input[i]);
		if(flag==1){
			animation(input,0,size);
			flag=0;
		}
		free(input);
		break;
	case 4:quick_sort(input,0,size-1);
		printf("\n\nsorted elements are: \n");
    		for(i=0;i<size;i++)
       			printf("%d\t",input[i]);
		if(flag==1){
			animation(input,0,size);
			flag=0;
		}
		free(input);
		break;
	
	}
    }
		
	while(choice!=5);

}