Advertisement

经典算法学习——单链表不带头结点的冒泡排序

阅读量:

在先前发布的博客《经典算法学习——冒泡排序》中,我曾简要演示了如何通过数组实现冒泡排序算法。本次博客将探讨如何利用单链表结构完成排序操作,其基本思路与之前保持一致。相关示例代码已上传至: https://github.com/chenyufeng1991/BubbleSortLinkedList

该算法的具体步骤描述如下:

(1)依次比较相邻的两个元素,若前一个元素的值大于后一个元素的值,则交换这两个元素的位置;

(2)完成对数组从第0个元素到第N-1个元素的一轮遍历后,最大的元素将被移动至数组末尾,即下标为N-1的位置(类似于沉入水底的过程);

(3)将N的值减1,若此时N不等于0,则重复执行上述第(1)和第(2)步;否则,排序过程结束。此时需要再次对数组从第0个元素到第N-2个元素进行新一轮遍历;

核心实现代码如下:

复制代码
 //链表实现冒泡排序

    
 Node *BubbleSortLinkedList(Node *pNode){
    
     if (pNode == NULL) {
    
     printf("%s函数执行,链表为空,冒泡排序失败\n",__FUNCTION__);
    
     return NULL;
    
     }else{
    
  
    
     Node *pMove;

全部评论 (0)

还没有任何评论哟~