Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458647
  • 博文数量: 113
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-09 16:01
个人简介

Let's go!!!!!

文章分类

全部博文(113)

文章存档

2019年(5)

2018年(4)

2017年(9)

2016年(5)

2015年(39)

2014年(6)

2013年(28)

2012年(17)

分类: LINUX

2014-12-14 21:16:32

产生随机数:
#include
#include
#include
#include
#include "generate.h"

void generate(int *data,int size)
{
   int i = 0;
   int j = 0;
   int number = 0;
   srand(time(NULL));    
   for(i = 0;i < NUM;i++)
   {
       number = rand()%UPPER_LIMIT;
       data[i] = number;
   }
}


#ifndef __GENERATE_H
#define __GENERATE_H

#define LOWER_LIMIT  0
#define UPPER_LIMIT  100
#define NUM          20


void generate(int *data,int size);

#endif



排序函数:
#include
#include
#include
#include

static int pow1(int k,int n)
{
   int num = 1;
   while(n--)
   {
       num *= k;
   }
   return num;
}

int rxsort(int *data,int size,int p,int k)
{
   int *count = NULL;
   int *temp = NULL;
   int pval = 0;
   int index = 0;
   int i = 0;
   int n = 0;
   
   if((count = (int *)malloc(k * sizeof(int))) == NULL)
   {  
       printf("Error:Allocate storage for count!");
       return -1;
   }
   if((temp = (int *)malloc(size * sizeof(int))) == NULL)
   {  
       printf("Error:Allocate storage for sorted elements!");
       free(count);
       return -1;
   }
   
   for(n = 0;n < p;n++)
   {
       pval = pow1(k,n);
                                                     
       for(i = 0;i < k;i++)    
       {
           count[i] = 0;
       }
       
       for(i = 0;i < size;i++)    
       {
           index = (data[i]/pval)%k;
           count[index] += 1;
       }

       for(i = 1;i < k;i++)    
       {
           count[i] = count[i] + count[i-1];
       }
       
       for(i = size - 1;i >= 0;i--)
       {
           index = (int)(data[i]/pval)%k;
           temp[count[index] - 1] = data[i];
           count[index] -= 1;
       }
       memcpy(data,temp,size * sizeof(int));
   }

   free(count);
   free(temp);
   return 0;
}
#ifndef __TXSORT_H
#define __TXSORT_H

int rxsort(int *data,int size,int p,int k);

#endif


main函数:
#include
#include "generate.h"
#include "rxsort.h"

int main()
{
   int array[NUM] ={0};
   int i = 0;

   generate(array,NUM);
   
   printf("Before sort:\n");
   for(i=0;i        printf("%d ",array[i]);
   printf("\n");
   
   rxsort(array,NUM,3,10);
   
   printf("After sort:\n");
   for(i=0;i        printf("%d ",array[i]);
   printf("\n");
}

MAKEFILE文件:
main:main.o generate.o rxsort.o
cc -o main main.o generate.o rxsort.o

main.o:main.c generate.h rxsort.h
cc -c main.c
generate.o:generate.c generate.h
cc -c generate.c
rxsort.o:rxsort.c rxsort.h
cc -c rxsort.c

clean:
rm *.o -rf
clear:
rm *.o main -rf

阅读(978) | 评论(0) | 转发(0) |
0

上一篇:计数排序

下一篇:堆排序

给主人留下些什么吧!~~