桶排序
来源:互联网 发布:淘宝上买什么 编辑:程序博客网 时间:2024/05/17 01:23
// Bucket_Sort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct bucket{ double value; bucket *next;};bucket *buckets[100];bucket *insert(bucket *head, double m){ bucket *p0, *p1, *p2; p0 = (bucket*)malloc(sizeof( bucket)); //需先初始化p0,后面才方便赋值 p2 = (bucket*)malloc(sizeof(bucket)); //避免提示p2未初始化 p0->value = m; p1 = head; if (head == nullptr) //如果链表为空链表,则插入节点为头指针且为唯一结点 { head = p0; head->next = nullptr; return head; } else //链表不为空 { while (p1->value < p0->value && p1->next != nullptr) //寻找插入点 { p2 = p1; p1 = p1->next; } if (p1->value > p0->value) //找到插入点 { if (p1 == head) //特殊情况,插入点在头指针前 { p0->next = head; head = p0; //插入结点作为头指针 } else //结点插入在p2和p1之间 { p0->next = p1; p2->next = p0; //此行会提示p2可能未初始化,所以开头加上p2 = (bucket*)malloc(sizeof(bucket)); } } else //链表的结点之间没有插入点,p0结点应该插入在链表尾部 { p1->next = p0; p0->next = nullptr; //p0结点作为链表的尾结点 } return head; //返回链表头指针 }}void print(bucket *head){ bucket *p; p = head; while (p != nullptr) { cout << p->value << endl; p = p->next; }}int _tmain(int argc, _TCHAR* argv[]){ double a[] = { 0.11, 0.34, 0.99, 0.45, 0.52, 0.77, 0.21 ,0.16,0.55,0.91,0.39}; int len = sizeof(a) / sizeof(double); for (int i = 0; i < len; ++i) { buckets[i] = nullptr; //每个桶都为空链表 } for (int i = 0; i < len; ++i) { int k = a[i] * 10; buckets[k] = insert(buckets[k], a[i]); //将每个元素放入对应区间中的桶,并返回对应桶的头指针 } for (int i = 1; i < 10; ++i) //共有10个桶,因为赋值时从i=1开始,因此打印也需要从i=1开始 { print(buckets[i]); } return 0;}
0 0
- 【排序算法】桶排序
- 排序算法-桶排序
- 第一章排序----桶排序
- 排序算法-桶排序
- 最快排序--桶排序
- 【排序】桶排序
- 排序之桶排序
- 排序之桶排序
- 排序总结---桶排序
- 排序算法----桶排序
- 排序算法---桶排序
- 【排序之一】桶排序
- 排序:桶排序
- 排序详解:桶排序
- 排序算法:桶排序
- 排序—桶排序
- 排序-桶排序
- 排序算法之--桶排序/radix排序
- 计数排序
- 【悟】终于入手PS4
- 基数排序
- python和php的面向对象
- js子窗体与父窗体
- 桶排序
- 网络设备将网口切换到业务板以后为什么会报各种不正确的信息?
- 1029. Median (25)
- Unity编程笔录--Unity Android加密dll
- VS2010远程调试 (2)
- Struts2系统学习(15)Struts2校验框架基本原理分析
- 变长数据项排序
- Gym 100796K Profact
- 创建型模式:工厂方法模式(Factory Method)--分析优缺点