Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455948
  • 博文数量: 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 22:53:42


产生随机数:
#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 void swap(int *data,int index,int min)
{
   int temp = data[min];
   data[min] = data[index];
   data[index] = temp;
}

static void PrecolateDown(int *data,int index,int size)
{
   int min = 0;
   while(index * 2 + 1 < size)
   {
       min = index * 2 + 1;
       if(index * 2 + 2 < size)
       {
           if(data[min] > data[index * 2 + 2])
           {
               min = index * 2 + 2;
           }              
       }
       
       if(data[index] < data[min])
           break;
       else
       {
           swap(data,index,min);
           index = min;
       }
   }
}

static void BuildHeap(int *data,int size)
{
   int i = 0;
   for(i = size/2 -1;i >= 0;i--)
       PrecolateDown(data,i,size);
}

int HeapSort(int *data,int size)
{
   int i = 0;
   BuildHeap(data,size);
   for(i = size - 1;i >= 1;i--)
   {
       swap(data,0,i);
       size--;    
       PrecolateDown(data,0,size);
   }
}


#ifndef __TXSORT_H
#define __TXSORT_H

int HeapSort(int *data,int size);

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

MAIKFILE文件:
main:main.o generate.o heapsort.o
cc -o main main.o generate.o heapsort.o

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

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

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

上一篇:基数排序

下一篇:SHELL字符串处理技巧

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