单链表中的冒泡排序(有头节点)
来源:互联网 发布:淘宝客服怎么设置多个 编辑:程序博客网 时间:2024/06/04 01:14
//冒泡排序(有头结点)
template<typename T>
void chainWithHeader<T>::bubblingSort()
{
chainNode<T>*pr, *pt,*pb,*pf,*pd;//pd表示每次要比较的尾元素,pr表示比较元素的前一个,pt表示比较元素的后一个
pb = headerNode; //pb为第一个比较元素的前驱
pr = headerNode->next;
pd = NULL;
pf = headerNode; //pf就是为了得到每次排完序的头节点
bool swapped = true; //为了在已经有序的情况下能及时退出
while (pf->next!=pd&&swapped)
{
pb = pf; //pb为第一个比较元素的前驱
pr = pf->next;
swapped = false; //目前为止未交换
while (pr->next!=pd)
{
pt = pr->next;
if (pr->element > pt->element)//如果两相邻的节点无序,则交换
{
pb->next = pt;
pr->next = pt->next;
pt->next = pr;
swapped = true;
}
pb = pb->next;
pr = pb->next;
}
pd = pr;//新的末尾
}
}
template<typename T>
void chainWithHeader<T>::bubblingSort()
{
chainNode<T>*pr, *pt,*pb,*pf,*pd;//pd表示每次要比较的尾元素,pr表示比较元素的前一个,pt表示比较元素的后一个
pb = headerNode; //pb为第一个比较元素的前驱
pr = headerNode->next;
pd = NULL;
pf = headerNode; //pf就是为了得到每次排完序的头节点
bool swapped = true; //为了在已经有序的情况下能及时退出
while (pf->next!=pd&&swapped)
{
pb = pf; //pb为第一个比较元素的前驱
pr = pf->next;
swapped = false; //目前为止未交换
while (pr->next!=pd)
{
pt = pr->next;
if (pr->element > pt->element)//如果两相邻的节点无序,则交换
{
pb->next = pt;
pr->next = pt->next;
pt->next = pr;
swapped = true;
}
pb = pb->next;
pr = pb->next;
}
pd = pr;//新的末尾
}
}
阅读全文
0 0
- 单链表中的冒泡排序(有头节点)
- 单链表中的冒泡排序(无头节点)
- 单链表中的选择排序(有头节点)
- 单链表中的计数排序(排列排序)(有头节点)
- 单链表中进行直接插入排序(有头节点)
- C++单链表的建立(有头节点)
- 有头节点的单链表的摧毁
- 2.17-比较有头节点的单链表与无头节点插入元素的区别;
- 单链表(有头)
- 16 - 11 - 04 有头节点 单链表---《数据结构(c language)》
- 有/无头节点的单链表的创建(尾插法)
- 链表的冒泡排序(节点交换法)
- 冒泡排序在单链表中的使用详解
- Java中的排序方法(冒泡排序 和 选择排序)
- C#中的int冒泡排序)
- gx中的冒泡排序
- java中的冒泡排序
- Java中的冒泡排序
- Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
- 【C++程序设计】-继承和派生
- windows 环境下c++ socket编程
- 作业二 双向链表
- BZOJ 3732 Network Kruskal+倍增
- 单链表中的冒泡排序(有头节点)
- 【C++程序设计】-类模板与向量
- Linux安装软件时出现无法修正错误的解决方法
- bzoj2427 软件安装
- java线程之间的调度使用wait/notify,await/single,LinkBlockingQuene实现
- 实验三十进制转二进制
- linux学习第一篇:网络配置
- 【C++程序设计】-多态性和虚函数
- 关于微信公众号服务器设置token的问题