Chinaunix首页 | 论坛 | 博客
  • 博客访问: 443197
  • 博文数量: 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 12:54:52

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

int ctsort(int *data,int size,int max)
{
   int *count = NULL;
   int *temp = NULL;
   int i = 0;
   int j = 0;

   if((count = (int *)malloc(max * 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(i = 0;i < max;i++)
       count[i] = 0;


   for(i = 0;i < size;i++)
       count[data[i]] += 1;
   

   for(i = 1;i < max;i++)
       count[i] = count[i] + count[i-1];

   for(i = size -1;i >= 0;i--)
   {
       temp[count[data[i]] - 1] = data[i];
       count[data[i]] -= 1;
   }

   memcpy(data,temp,size * sizeof(int));
   free(count);
   free(temp);
   return 0;
}

#ifndef __CTSORT_H
#define __CTSORT_H

int ctsort(int *data,int size,int max);

#endif

生成随机数:
#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  10
#define NUM          20

void generate(int *data,int size);


main函数:
#include
#include "generate.h"
#include "ctsort.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");
   ctsort(array,NUM,UPPER_LIMIT);
   
   printf("After sort:\n");
   for(i=0;i        printf("%d ",array[i]);
   printf("\n");
}

MKAEFLE文件:
main:main.o generate.o ctsort.o
cc -o main main.o generate.o ctsort.o

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

clean:
rm *.o -rf
clear:
rm *.o main -rf
阅读(1040) | 评论(0) | 转发(0) |
0

上一篇:快速排序

下一篇:基数排序

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