[数据结构]——桶排序
来源:互联网 发布:淘宝店运费险怎么算的 编辑:程序博客网 时间:2024/06/01 09:28
一,桶排序
以下代码转自:桶排序
#include <iostream> #include <list> using namespace std; struct Node { double value; Node *next; }; //桶排序主程序 void bucketSort(double* arr, int length) { Node key[10]; int number = 0; Node *p, *q;//插入节点临时变量 int counter = 0; for(int i = 0; i < 10; i++) { key[i].value = 0; key[i].next = NULL; } for(int i = 0; i < length; i++) { Node *insert = new Node(); insert->value = arr[i]; insert->next = NULL; number = arr[i] * 10; if(key[number].next == NULL) { key[number].next = insert; } else { p = &key[number]; q = key[number].next; while((q != NULL) && (q->value <= arr[i])) { q = q->next; p = p->next; } insert->next = q; p->next = insert; } } for(int i = 0; i < 10; i++) { p = key[i].next; if(p == NULL) continue; while(p != NULL) { arr[counter++] = p->value; p = p->next; } } } int main() { double a[] = {0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.21, 0.12, 0.23, 0.68}; bucketSort(a, 10); for(int i = 0; i < 10; i++) { cout << a[i] << " "; } cout << endl; return 0; }【例】要将一副混洗的52张扑克牌按点数A<2<…<J<Q<K排序,需设置13个"箱子",排序时依次将每张牌按点数放入相应的箱子里,然后依次将这些箱子首尾相接,就得到了按点数递增序排列的一副
一般情况下每个箱子中存放多少个关键字相同的记录是无法预料的,故箱子的类型应设计成链表为宜。
0 0
- [数据结构]——桶排序
- 数据结构——排序
- 数据结构——排序
- 《数据结构》——排序
- 数据结构——排序
- 数据结构—排序算法
- 数据结构—希尔排序
- 数据结构—排序总结
- 数据结构 — 归并排序
- 数据结构 — 堆排序
- 数据结构—排序
- 数据结构—排序I
- 数据结构—排序II
- 数据结构—排序III
- 数据结构—排序IV
- 数据结构 — 排序算法
- 数据结构 — 插入排序
- 数据结构 — 希尔排序
- U-BOOT源码分析及移植一(转)
- U-BOOT源码分析及移植二(转)
- u-boot的Makefile分析(转)
- C/C++ 笔试、面试题目(转)
- 图解交换机和路由器的应用区别(转…
- [数据结构]——桶排序
- 二层交换机、三层交换机和路由器的…
- Leetcode:Container With Most Water
- 因特网网络层数据报传输机制(转)
- 路由原理介绍(转)
- C++基础知识点(转)
- C\C++基础知识,面试常见问题(转…
- C++引用与指针比较(转)
- C++引用详解(转)