• 大小: 6.30KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


利用Pthread多线程工具 实现桶排序的并行化,并在linux下调试通过。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

#define MAX_BUCKET 10   /*桶容器的数量*/
#define RANGE_BUCKET 10 /*每个桶容器的增量范围*/
#define MAX_NUMBERS 200 /*用于测试排序的数据总量*/


//定义数据节点,包含数据和指向下一个节点的指针
typedef struct _node {
    int data;
    struct _node * next;
}
node;

//定义数据结构,传递至线程执行函数里面
struct thread_data{
   int  thread_id;//当前线程的ID
   node *in;//当前线程需要处理的单链表
};

//声明线程,每个桶容器对应一个线程
pthread_t threads[MAX_BUCKET];

//声明传递至线程执行函数的结构体数组
struct thread_data thread_data_array[MAX_BUCKET];

//声明桶排序函数
void bucket_sort(int array[]int arraySize);

//声明每个线程的处理函数
void *thread_bucket_sort(void *in);

//声明插入排序函数
node *insert_sort(node *list);

//声明计算桶容器下标的函数
int returnBucketIndex(int data);


//声明桶容器,用于数据分配以及排序
node ** all_buckets;
//声明桶容器,用于在线程中排序完成后更新
node ** all_buckets_t;

    

//桶排序函数定义
void bucket_sort(int array[] int arraySize)
{
    int ij;
    
    //分配内存
    all_buckets = (node **)malloc(sizeof(node *)*MAX_BUCKET);
    all_buckets_t = (node **)malloc(sizeof(node

评论

共有 条评论