桶排序_改进结构体
来源:互联网 发布:广电网络招聘 编辑:程序博客网 时间:2024/06/08 16:03
用typedef *BUCKET 替代原本的struct和指针,有点把结构体指针当类用的感觉啊……
#include <stdio.h>#include <stdlib.h>#define LENGTH 10000001int a[LENGTH];void print(int* a, int x, int y) {int i;for (i = x; i < y + 1; i++)printf("%d ", a[i]);printf("\n");}typedef struct bucket {int key;struct bucket *next;}*Bucket;void bucket_sort(int* a, int n) {int i, k;int min, max, buck_num;min = max = a[0];for (i = 0; i < n; i++) {min = a[i] < min ? a[i] : min;max = a[i] > max ? a[i] : max;}buck_num = (max - min + 1) / 10 + 1;Bucket pBucket,p;pBucket = (Bucket) malloc(sizeof(Bucket) * buck_num);memset(pBucket, 0, sizeof(Bucket) * buck_num);p = (struct bucket*)malloc(sizeof(Bucket));for (i = 0; i < buck_num; i++){p = pBucket + i;p->next = NULL;}for (i = 0; i < n; i++) {k = (a[i] - min + 1) / 10;p = pBucket + k;Bucket newBucket;newBucket = (Bucket)malloc(sizeof(Bucket));while(p->next != NULL){if(p->next->key > a[i])break;p = p->next;}newBucket->key = a[i];newBucket->next = p->next;p->next = newBucket;}int pos = 0;for (i = 0; i < buck_num; i++){p = pBucket + i;while(p->next != NULL){p = p->next;a[pos++] = p->key;}}}int main() {//freopen("sort.in", "r", stdin);int n, i;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d", &a[i]);bucket_sort(a, n);print(a,0,n-1);return 0;}
0 0
- 桶排序_改进结构体
- 结构体二级排序-改进
- hdu 2022 海选女主角_结构体三级排序
- 函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
- 对于桶式排序的改进
- 数据结构_桶排序
- 学生成绩管理系统_结构体、指针、存储、排序、动态内存分配
- 从C开始_结构体_
- 结构体_结构体指针,tyepdef_union_enum
- 【排序结构6】 桶排序
- 结构体排序,多级排序
- 从C开始_结构体_结构数组1
- 从C开始_结构体_嵌套结构
- 从C开始_结构体_结构指针
- C语言_结构体
- 结构体_位段
- Java学习_结构体
- zju2005排名_结构体
- 关于block使用导致键盘的延时操作
- bzoj 3209: 花神的数论题 数位dp
- Kafka的设计思想、理念
- hibernate里createSQLQuery
- 应用层之E-mail服务及javaMail邮件发送的知识总结
- 桶排序_改进结构体
- JBPM3.2相关
- 欢迎使用CSDN-markdown编辑器
- Java 哈希机制
- 欧氏距离与余弦相似度
- Unity之Assetbundle打包记录一
- java基础知识
- php 格式化电话号码
- MySQL创建数据库时判断是否存在,mysql create database 指定utf-8编码