⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radixsort.txt

📁 radix排序法
💻 TXT
字号:
//**************************************
//     
// Name: Radix Sort
// Description:This is a radix sort, an 
//     extermly fast sort for integer data type
//     s: char, int, and long.
The sample program using the radix sort sorts an array of 80,000 random integers, and writes the sorted numbers to a text file.
// By: Wesley Hopper
//

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void main()


    {
    	srand(time(NULL));
    	const int numdata=80000; //How many numbers to sort
    	int data[numdata]; //The random number array
    	
    	//make random numbers for the number array
    	for(int a=0; a<numdata; a++)
    		data[a]=rand();
    			
    	//Data for the radix sort	
    	int array1[numdata], array0[numdata];	
    	int num1, num0, mask=1;
    /**********************************************************************/
    	/**********************************
    				Radix Sort
    	The count<NUM must be the number of 
    	bits of the data type to be sorted
    	char=8,int=16,long=32
    	**********************************/
    	for(int bit=0; bit<16; bit++) //for each bit of the data type


        	{
        		num1=num0=0; //set num of 0's & 1's back to 0
        		//for each number in the number array
        		for(int index=0; index<numdata; index++)


            		{
            			//if the value of this bit is 1,
            			//copy the number to the 1's array
            			//and increase the 1's counter
            	if(data[index] & mask)


                			{
                				array1[num1]=data[index];
                				num1++;	
                			}
                				
                			//if the value of this bit is 0, 
                			//copy the number to the 0's array
                			//and increase the 0's counter
                			else


                    			{
                    				array0[num0]=data[index];
                    				num0++;
                    			}
                    		}
                    		/*************************************
                    			Copy the numbers into the number 
                    		array from the 1's and 0's arrays, 1's 
                    		first sorting them from greatest to 
                    		least. Copy the 0's array first to sort
                    		from least to greatest.
                    			the num*<<2 is the number of 1's
                    		or 0's bit shifted to the left 2.
                    		this is an optimized multiplication 
                    		by 4 (2^2), which is the size of a 
                    		32-bit variable.
                    		*************************************/
                    		memcpy(data, array1, num1<<2); 
                    memcpy(data+num1, array0, num0<<2); 
                    		//bitshift mask left for next bit
                    		mask<<=1; 
                    	}
                    	
                    /*************************************************************/
                    	
                    	//write sorted numbers to a text file
                    	FILE *file=fopen("C:\\numbers.txt", "w");
                    	for(int x=0; x<numdata; x++)
                    		fprintf(file, "%i\n", data[x]);
                }

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -