单链表排序——交换数据成员
2023-09-27 14:28:32 时间
仿冒泡函数,对一个Words型结构体链表排序,全部代码[单链表]统计文本中英文单词出现次数,并输出前200个单词及其出现次数
void WordsSort(Words *headWord)
{
if(headWord->next == NULL) return; //链表为空无法排序
Words *flg_word = NULL; //标记,每次循环结束时指向本次循环的最大值地址,同时也可做终止条件,仿冒泡
int flag; //优化冒泡,标记是否发生了交换
while(flg_word != headWord->next) //类似于冒泡排序中内循环的条件语句 j<n-i-1
{ //或flg_word > headWord->next
flag = 0;
Words *pos = headWord->next; //当前 pos[j]
Words *pos_next = pos->next; //下一个 pos[j+1]
while(pos_next != NULL) //条件基本用不上,可写为死循环
{
if(pos->count < pos_next->count)
{
SwapWord(pos,pos_next); //交换数据函数
flag = 1;
}
if(pos_next->next == flg_word)
{
flg_word = pos_next; //相当于flg_word每次向前移动一个位置
break; //提前退出,后面的已经有序
}
pos = pos->next;
pos_next = pos_next->next;
}
if(flag == 0) break; //没有交换,该链表(数列……)已为有序,无需再排序
}
}
相关文章
- UVA11462年龄排序
- Python中数据的排序
- [译]async/await中使用阻塞式代码导致死锁 百万数据排序:优化的选择排序(堆排序)
- 【Unity Shaders】Transparency —— 使用渲染队列进行深度排序
- DES加解密算法:含DES密钥生成、参数名ASCII码从小到大排序
- 52jqGrid 分组 - 远程数据(grandtotals排序)
- 51jqGrid 分组 - 远程数据(排序过)
- C#,快速排序算法(Quick Sort)的非递归实现与数据可视化
- mysql数据查询 5.排序
- python学习之利用format()或zfill()函数对数据进行编号排序的应用
- SwiftUI Swift 新技能大全之 使用 KeyPathComparator 对数据进行排序
- SwiftUI 章节类数据如何存储 List显示自定义排序(字典dictionary 遍历)
- 一个div层在页面上下左右居中以及数据的排序
- 【Unity3D数据集合】(六)散列集合HashSet和排序集合SortedSet学习
- 算法-希尔排序
- SQL Server 分组排序后取第N条数据(或前N条)
- 【bzoj4010】[HNOI2015]菜肴制作 拓扑排序+堆