博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.桶排序
阅读量:4946 次
发布时间:2019-06-11

本文共 1419 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
using namespace std;const int maxn = 100 + 2;int num[maxn], n;struct node{ node(){ next = NULL; num = -1; } node(int x, node *n):num(x), next(n) {} int num; node *next;};int bits(int x){ int ret = 0; while(x >= 10) { ret++; x /= 10; } return ret + 1;}void Insert(node *n, int x){ node *p = n; /* if(p->next == NULL) { p->next = new node(x, NULL); return ; } */这一部分完全没必要写 for(; p->next != NULL; p = p->next) { if(p->next->num > x) { p->next = new node(x, p->next); return ; } } p->next = new node(x, NULL);}void Bucket_sort(int *num, int n, int k){ node *c = new node[10]; for(int i = 0; i < n; i++) Insert(&c[num[i] / k], num[i]); int t = 0; for(int i = 0; i < 10; i++) for(node *p = c[i].next; p != NULL; p = p->next) num[t++] = p->num;}int main(){ cin >> n; int *k = &num[0]; for(int i = 0; i < n; i++) { cin >> num[i]; if(*k < num[i]) k = &num[i]; } Bucket_sort(num, n, pow(10, bits(*k) - 1)); for(int i = 1; i < n; i++) cout << num[i] << " "; cout << endl;}

时间复杂度为O(n) ~ O(n^2), 嗯, 比较随缘的一种算法

我的这个版本只能排序正数,对数据分布均匀的情况比较适用

代码没有快排来的简洁, 只是学习用吧....

再有就当作练习链表了....

 

转载于:https://www.cnblogs.com/QQ-1615160629/p/5860494.html

你可能感兴趣的文章
APIs
查看>>
c# 判断是否为同一周
查看>>
Python函数篇(1)-函数中的形参与实参(已更新)
查看>>
WCF(二) 使用配置文件实现WCF应用程序
查看>>
【CodeForces 803 C】Maximal GCD(GCD+思维)
查看>>
python 去掉换行符或者改为其他方式结尾的方法(end='')
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
REST构架风格介绍:状态表述转移
查看>>
广告弹力球效果
查看>>
学习总结(三十五)
查看>>
[转载]115个Java面试题和答案
查看>>
[笔记] 易错点集合
查看>>
使用gnuplot对tpcc-mysql压测结果生成图表
查看>>
微信事件推送接口(原创总结)
查看>>
ubuntu server下安装VMware【原创】
查看>>
浅谈session与cookie之间的联系
查看>>
struct {0}初始化
查看>>
c++ operator
查看>>
apache 添加 ssl_module
查看>>
java小技巧
查看>>