Exemplo n.º 1
0
void RadixMap_sort(RadixMap *map) {
    uint64_t *source = &map->contents[0].raw;
    uint64_t *temp = &map->temp[0].raw;

    radix_sort(0, map->end, source, temp);
    radix_sort(1, map->end, temp, source);
    radix_sort(2, map->end, source, temp);
    radix_sort(3, map->end, temp, source);
}
Exemplo n.º 2
0
main()
{
	struct node *tmp,*q;
	int i,n,item;

	printf("Enter the number of elements in the list : ");
	scanf("%d", &n);

	for(i=0;i<n;i++)
	{
		printf("Enter element %d : ",i+1);
		scanf("%d",&item);

		/* Inserting elements in the linked list */
		tmp= malloc(sizeof(struct node));
		tmp->info=item;
		tmp->link=NULL;

		if(start==NULL) /* Inserting first element */
			start=tmp;
		else
		{
			q=start;
			while(q->link!=NULL)
				q=q->link;
			q->link=tmp;
		}
	}/*End of for*/

	printf("Unsorted list is :\n");
	display();
	radix_sort();
	printf("Sorted list is :\n");
	display ();
}/*End of main()*/
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
    int i;
    int array[30] = { 258, 976, 515, 337, 359, 701, 916, 494, 303, 175,
                      677, 825, 131, 560, 147, 254, 759, 814, 917, 382,
                      452, 114, 873, 585, 881, 127, 819, 658, 461, 435
                    };

    int len = 30;		/* 测试数据个数 */
    int dec = 3;		/* 数据位数,3代表3位数 */
    int order = 1;		/* 排序的位数,1代表个位、2代表十位、3代表百位 */

    printf("before\n");
    for (i = 0; i < 30; i++)
        printf("%d  ", array[i]);
    printf("\n");

    /* 排序函数,从个位开始 */
    radix_sort(array, len, dec, order);

    printf("final\n");
    for (i = 0; i < 30; i++)
        printf("%d  ", array[i]);
    printf("\n");

    return 0;
}
Exemplo n.º 4
0
int main()
{

  int n,big_n;

  printf("How many elements? ");
  scanf("%d",&n);

  printf("Largest element? ");
  scanf("%d",&big_n);
  
  int a[n];

  int i;

  for(i=0;i<n;i++)
    a[i]=rand()%big_n;
  
  print_array(a,n);

  printf("\n");

  radix_sort(a,n,big_n-1);

  print_array(a,n);

}
Exemplo n.º 5
0
Arquivo: radix.c Projeto: mzzyk/C
int main(int argc,char *argv[]){
	FILE *fp;
	int i=0;
	if((fp=fopen(argv[1],"r"))==NULL){
		printf("can't open the file!");
		exit(0);
	}
	while(fscanf(fp,"%d",&data[i])!=EOF)
		i++;
	n = i;

	get_max_num();

	int rank;
	MPI_Init(&argc, &argv);
	// get the id of process
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	radix_sort(rank);

	if(rank == 0){
		printf("the smallest number is: %d\n",data[0]);
		printf("the n/4 smallest number is: %d\n",data[n/4]);
		printf("the n/2 smallest number is: %d\n",data[n/2]);
		printf("the largest number is: %d\n",data[n - 1]);

	}

	MPI_Finalize();
	return 0;
}
Exemplo n.º 6
0
int main(int argc, char ** argv)
{
	// Открываем файлы и считываем данные
	FILE *fin, *fout;
	fin = fopen("numbers.txt", "r");
	fout = fopen("output.txt", "w");
	if(fin == NULL || fout == NULL)
	{
		printf("Error!");
		return 1;
	}

	int n, i;
	fscanf(fin, "%d", &n);
	int * A = (int *)malloc(n * sizeof(int));
	for ( i = 0; i < n; ++i )
	{
		fscanf(fin, "%d", &A[i]);
	}
	fclose(fin);

	// Сортируем

	radix_sort(A, n);

	// Записывае данные и закрываем файлы

	for (int i = 0; i < n; ++i)
		fprintf(fout, "%d ", A[i]);

	fclose(fout);
	free(A);
	return 0;
}
Exemplo n.º 7
0
int main(int argc, char *argv[]){

	if(argc != 2){
		fprintf(stderr, "Correct Usage: %s <VECTOR_LENGTH>\n", argv[0]);
		exit(-1);
	}

	int *vec, length;
	clock_t init, end;

	length = atoi(argv[1]);
	vec = create_vector(length);
	
	//print_vector(vec, length);

	init = clock();
	vec = radix_sort(vec, length);
	end = clock();

	//print_vector(vec, length);

	printf("%f\n", (float) (end-init) / (float) CLOCKS_PER_SEC);


	return 0;
}
Exemplo n.º 8
0
void main()
{
	int array[100],n,i;
	clrscr();
	printf("Enter the number of elements to be sorted: ");
	scanf("%d",&n);
	printf("\nEnter the elements to be sorted: \n");
	for(i = 0 ; i < n ; i++ )
	{
		scanf("%d",&array[i]);
	}
 
	printf("\nBefore Radix Sort:");
	for(i = 0; i < n; i++)
	{
		printf("%d\t", array[i]);
	}
	printf("\n");
	radix_sort(array,n);
	printf("\nArray After Radix Sort: ");  //Array After Radix Sort
	for(i = 0; i < n; i++)
	{
		printf("%d\t", array[i]);
	}
	printf("\n");
	getch();
}
Exemplo n.º 9
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();
}
Exemplo n.º 10
0
int main() {
    
  u_i len = 12;
  int arr[12] = {2, 13, 12, 16, 15, 4, 17, 8, 1, 18, 14, 9};
  int *temp1 = copy(arr, len);
  insertion_sort(temp1, len);
  int *temp2 = copy(arr, len);
  quick_sort(temp2, len);
  int *temp3 = copy(arr, len);
  merge_sort(temp3, len);
  int *temp4 = copy(arr, len);
  selection_sort(temp4, len);
  int *temp5 = copy(arr, len);
  counting_sort(temp5, len);
  int *temp6 = copy(arr, len);
  heap_sort(temp6, len);
  int *temp7 = copy(arr, len);
  radix_sort(temp7, len);
  
  bool eq = equal(temp1, temp2, len) &
            equal(temp2, temp3, len) &
            equal(temp3, temp4, len) &
            equal(temp4, temp5, len) &
            equal(temp5, temp6, len) &
            equal(temp6, temp7, len);
            
  printf("\x1B[32m""Equal arrays :%s\n""\033[0m", eq ? "true" : "false");
  
  // Free all arrays allocated.
}
Exemplo n.º 11
0
static void RadixMap_sort_optimized(RadixMap *map, uint64_t max, size_t starting_index,
										uint32_t smallest_key, uint32_t biggest_key)
{
	uint64_t *source = &map->contents[starting_index].raw;
	uint64_t *temp = &map->temp[starting_index].raw;
	
	uint32_t range_key = smallest_key | biggest_key;

	int i = 0;

	int drop_high_digits = 0;
	int drop_low_digits = 0;

	for(i = DIGITS - 1; i >= 0; i--) {
		if(ByteOf(&range_key, i) == 0) {
			drop_high_digits++;
		} else {
			break;
		}
	}

	for(i = 0; i < DIGITS; i++) {
		if(ByteOf(&range_key, i) == 0) {
			drop_low_digits++;
		} else {
			break;
		}
	}
	
	int significant_digits = 0;

	for(i = drop_low_digits; i < DIGITS - drop_high_digits; i++) {

		if(significant_digits % 2 == 0) {
			radix_sort(i, max, source, temp);
		} else {
			radix_sort(i, max, temp, source);
		}

		significant_digits++;
	}

	if(significant_digits > 0 && significant_digits % 2 == 1) {
		memcpy(source, temp, max * sizeof(uint64_t));
	}
}
Exemplo n.º 12
0
int main() {
  int list[] = {435,1432,6456,23432,732,234,6546,234,76571,123};
  print_list(list, 10);
  radix_sort(list, 10);
  print_list(list, 10);
  return 0;

}
Exemplo n.º 13
0
void test() {
    int len = 16, x[16], i;
    each(i, len) x[i] = rand() % 512 - 256;
    each(i, len) printf("%d%c", x[i], i + 1 < len ? ' ' : '\n');

    radix_sort(x, len);

    each(i, len) printf("%d%c", x[i], i + 1 < len ? ' ' : '\n');
}
Exemplo n.º 14
0
int main(int argc, char **args)
{
	int array[SIZE] =
	{ 305, 403, 417, 922, 429, 78, 7, 20, 446, 23 };
	display(array, SIZE);
	radix_sort(array, SIZE);

	return 0;
}
Exemplo n.º 15
0
void sort_numbers(item *A, int size, int max_digits) {
    int groups[max_digits + 1];

    partition(A, size, max_digits, groups, item_digits);

    for (int i = 1; i < max_digits + 1; i++) {
        radix_sort(A, groups[i - 1], groups[i], i, item_nth_digit);
    }
}
int main(){
	/*
	*/
	int data[]={64,8,216,512,27,729,0,1,343,125,93};
	int size=sizeof(data)/sizeof(int);
	radix_sort(data,size,3);
	displayoutcome(data,size);
	return 0;
}
Exemplo n.º 17
0
int solution(int A[], int N) {
    radix_sort(A, A + N, 1 << 30);
    
    for (int i = 0; i < N - 1; i+=2) {
        if (A[i] != A[i + 1]) {
            return A[i];           
        } 
    }
    return A[N - 1];
}
Exemplo n.º 18
0
// test for big number of elements
static void test_radix (ulong N)
{
        rec *data = (rec *) malloc (N * sizeof (rec));
        assert (data != NULL);

        make_random (data, N);
        radix_sort (data, N);
        check_order (data, N);

        free (data);
}
Exemplo n.º 19
0
void all_radix_sort(int n){
  int i;
  int t = 1;
  int m = 0;
  // データ内の最大桁数(7桁)分を繰り返しソートしていく
  for(i = 0; i <= 7; i++){
    radix_sort(n, t);  // n個のデータ,t桁目
    t++;
  }

}
Exemplo n.º 20
0
int main(void)
{
	int len = 16, x[16], i;
	size_t len = 16, i;
	each(i, len) x[i] = rand() % 512 - 256;
 
	radix_sort(x, len);
 
	each(i, len) printf("%d%c", x[i], i + 1 < len ? ' ' : '\n');
 
	return 0;
}
Exemplo n.º 21
0
int main() {
	/* integers all must have the same amount of digits */
	int seq[SEQUENCE_LENGTH] = {7325, 1334, 4432, 5991, 1324, 8421, 5838, 3492, 6539, 3591};

	print_before_message();
	print_sequence(seq);

	radix_sort(seq);

	print_after_message();
	print_sequence(seq);
}
Exemplo n.º 22
0
static void RadixMap_sort_with_key(RadixMap *map, UINT32_T key) 
{
	uint64_t *source = &map->contents[0].raw;
	uint64_t *temp = &map->temp[0].raw;
	
	if (key.byte._3) {
		radix_sort(3, map->end, temp, source);
	} else if (key.byte._2) {
		radix_sort(2, map->end, source, temp);
		radix_sort(3, map->end, temp, source);
	} else if (key.byte._1) {
		radix_sort(1, map->end, temp, source);
		radix_sort(2, map->end, source, temp);
		radix_sort(3, map->end, temp, source);
	} else {
		radix_sort(0, map->end, source, temp);
		radix_sort(1, map->end, temp, source);
		radix_sort(2, map->end, source, temp);
		radix_sort(3, map->end, temp, source);
	}
}
Exemplo n.º 23
0
int main(int argc, char**argv)
{
	int i;
	int arr[] = {4, 5, 2, 6, 2, 3, 1, 1};
	int arr1[] = {23, 51, 232, 61324, 1161, 22};
	radix_sort(arr, 8, 1); 

	for (i = 0; i < 8; ++i) {
		printf("%d ", arr[i]);
	}

	printf("\n");

	radix_sort(arr1, 6, 5);
	for (i = 0; i < 6; ++i) {
		printf("%d ", arr1[i]);
	}

	printf("\n");

	return 0;
}
Exemplo n.º 24
0
/* sort signed ints > 0 */
static void radix_sort(int *from, int *to, int bit)
{
    if (!bit || to < from + 1) return;
 
    int *ll = from, *rr = to - 1, tmp;
    while (1) {
        /* find left most with bit, and right most without bit, swap */
        while (ll < rr && !(*ll & bit)) ll++;
        while (ll < rr &&  (*rr & bit)) rr--;
        if (ll >= rr) break;
      
        int temp = *ll;
        *ll = *rr;
        *rr = temp;
    }
 
    if (!(bit & *ll) && ll < to) ll++;
    bit >>= 1;
 
    radix_sort(from, ll, bit);
    radix_sort(ll, to, bit);
}
Exemplo n.º 25
0
int main()
{
  // Input array
  int arr[] = {3, 56, 34, 21, 595, 606, 65, 809, 93, 12};
  int arr_size = sizeof(arr)/sizeof(int);
  printf("Array before sorting\n");
  print(arr, arr_size);
  printf("Array Size is %d\n", arr_size);
  // Radix sort function call
  radix_sort(arr, arr_size);
  printf("Array after radix sorting\n");
  printf("Array size id %d\n", arr_size);
  print(arr, arr_size);
}
Exemplo n.º 26
0
int main(int argc, char** argv)
{
  int print_results = 0;

  // check for correct number of arguments
  if (argc < 3) {
    usage();
    return EXIT_FAILURE;
  } else if (argc > 3) {
    print_results = atoi(argv[3]);
  }

  // initialize vars and allocate memory
  const int n = atoi(argv[2]);
  int* a = malloc(sizeof(int) * n);

  // initialize local array
  if (init_array(argv[1], 0, n, &a[0]) != EXIT_SUCCESS) {
    printf("File %s could not be opened!\n", argv[1]);
    return EXIT_FAILURE;
  }

  // take a timestamp before the sort starts
  timestamp_type time1, time2;
  get_timestamp(&time1);

  // sort elements
  radix_sort(&a[0], n);
  
  // take a timestamp after the process finished sorting
  get_timestamp(&time2);

  // calculate fish updates per second
  double elapsed = timestamp_diff_in_seconds(time1,time2);
  printf("%f s\n", elapsed);
  printf("%d elements sorted\n", n);
  printf("%f elements/s\n", n / elapsed);

  // print sorted resutls
  if (print_results) {
    print_array(&a[0], n);
  }

  // release resources no longer used
  free(a);

  return 0;
}
Exemplo n.º 27
0
Arquivo: 5.c Projeto: harshit027/Codes
void input(void)
{
void output(int a[],int n);
void radix_sort(int a[],int n);
printf("How many elements in the array : ");
scanf("%d",&n);
printf("\n");
printf("Enter the elements : \n");
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[i]);
}
radix_sort(a,n);
printf("Sorted Array : \n");
output(a,n);
}
Exemplo n.º 28
0
    int maximumGap_sort(std::vector<int>& nums)
    {
        auto sz = nums.size();
        if(sz<2)
        {
            return 0;
        }

        radix_sort(nums);

        int max_gap = 0;
        for(size_t i=1; i<nums.size(); ++i)
        {
            max_gap = std::max(max_gap, nums[i]-nums[i-1]);
        }
        return max_gap;
    }
Exemplo n.º 29
0
int main()
{
    FILE *f = fopen("outtiny.txt", "w");
    if(f == NULL)
    {
        printf("Could not initialize file\n");
        return -1;
    }

    fprintf(f, "\t1 core\t4 core\n");

    for(int N = 1; N < 10000; N += 1)
    {
        if(N % 10000 == 0) printf ("%d\n", N);
        struct timespec start, end;

        int* array = generate_rand_array(N);
        if(array == NULL)
        {
            printf("Not enough memory\n");
            return -1;
        }

        clock_gettime(CLOCK_MONOTONIC, &start);
        radix_sort(array, N);
        clock_gettime(CLOCK_MONOTONIC, &end);

        fprintf(f, "%d\t", N);
        fprintf(f, "%lf\t",
                (double)(diff(start, end).tv_nsec) / 1000000000.0);

        clock_gettime(CLOCK_MONOTONIC, &start);
        radix_sort_parallel(array, N);
        clock_gettime(CLOCK_MONOTONIC, &end);

        fprintf(f, "%lf\n",
                (double)(diff(start, end).tv_nsec) / 1000000000.0);

        free(array);
    }

    fclose(f);

    return 0;
}
void main()
{
	int i;
	int a[] = {53, 3, 542, 748, 14, 214, 154, 63, 616};
	int ilen = LENGTH(a);

	printf("before sort:");
	for (i=0; i<ilen; i++)
		printf("%d ", a[i]);
	printf("\n");

	radix_sort(a, ilen);

	printf("after  sort:");
	for (i=0; i<ilen; i++)
		printf("%d ", a[i]);
	printf("\n");
}