Esempio n. 1
0
void Tools::Move_Ends(Cube list[], int64_t* left_end, int64_t* right_start,
                      const char right, const char left, const int bit) {
    int64_t start = (*left_end)    + 1;
    int64_t end   = (*right_start) - 1;
    int64_t i;
    char* current;
    Cube* current_cube;

    for (i = end; i > *left_end; --i) {
        current = reinterpret_cast<char*> (&list[i]);
        if (current[bit] != left) {
            *right_start = i + 1;
            break;
        }
    }

    current_cube = &list[(*left_end) + 1];
    for (i = start; i < *right_start; ) {
        current = reinterpret_cast<char*> (current_cube);
        if (current[bit] == right) {
            (*left_end)++;
            Swap(current_cube, &list[*left_end]);
            current_cube++;
            ++i;
        } else if (current[bit] == left) {
            (*right_start)--;
            Swap(current_cube, &list[*right_start]);
        } else {
            current_cube++;
            ++i;
        }
    }

    if (start < *left_end)  Radix_Sort(list, start,       *left_end, bit + 1);
    if (*right_start < end) Radix_Sort(list, *right_start, end,      bit + 1);
}
Esempio n. 2
0
void main()
{
	lnode h;
	int d;
	clrscr();
	h=my_input(&d);
	puts("The sequence you input is:");
	my_output(h);
	h=Radix_Sort(h,d);
	puts("\nThe sequence after radix_sort is:");
	my_output(h);
	my_free(h);
	puts("\n Press any key to quit...");
	getch();
}
Esempio n. 3
0
void main(void) {
    int a[ARR_NUM] = {137, 219, 532, 655, 422, 164, 98, 422, 334}, b[ARR_NUM], i;
    printf("排序前( before sorting ):\n");

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

    Radix_Sort(a, b, ARR_NUM, 10, 3);
    printf("\n排序後 ( after sorting ):\n");

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

    printf("\n");
}
int main(int argc, char *argv[])
{
   
	int a[ARR_NUM]={137,219,532,655,422,164,98,422,334},b[ARR_NUM],i;

	printf("Radix Sort 排序前( before sorting ):\n");
	for(i=0;i < ARR_NUM;i++)
        printf(" %d",a[i]);
	Radix_Sort(a,b,ARR_NUM,10,3);

	printf("\nRadix Sort 排序後 ( after sorting ):\n");
	for(i=0;i < ARR_NUM;i++)
		printf(" %d",a[i]);
	printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}
Esempio n. 5
0
void main()
{
 int no[M]={42,23,74,11,65,57,94,36,99,87,70,81,61},i,cnt=0;
clrscr();
/*   for(i=0;i<SIZE;i++)
   {
    printf("Enter no[%d] : ",i+1);
    scanf("%d",&no[i]);
   }*/
   cnt=FindMaxLen(no);
   printf("\nmaxlen:%d",cnt);
   getch();

   for(i=0;i<cnt;i++)
   {
    Radix_Sort(no,i+1);
    disp(arr);
   }
//getch();
}