• Question :

    • Bubble sort using singly-linked list
    • 群暉面試題
  • Idea : 
    • 在linked list 交換node與node時, 我們會想用換*next的方式。但是這裡是singly-linked list.
      還會需要previously node。其實這裡單純直接換int val還比較簡單。不過算蠻偷吃步的
  • Code : [根本就是array版]
  • typedef struct Node{
    int val;
    struct Node *next;
    }Node, *NodePtr;
    void bubbleSort(NodePtr head) {
    int i,j,tmp;
    bool flag;
    for(i = 0; i < len-1 ;i++) {
    NodePtr curr = head;
    NodePtr next = head->next;
    flag = false;
    for(j=0; j < len-i-1 ;j++) {
    if(curr->val > next->val ) {
    tmp = curr->val;
    curr->val = next->val;
    next->val = tmp;
    flag = true;
    }
    }
    if(flag == false) break; // 沒有結點需要swap
    }
    }
  •   [修改*next 版]
void bubbleSort(NodePtr head) {
bool flag = true;
while(flag) {
flag = false;
NodePtr curr = head;
NodePtr prev = NULL;
while(curr->next){
if(curr->val > curr->next->val) {
flag = true;
curr = swap(curr,curr->next);
if(prev == NULL) //while swaping the head node
head = curr;
else
prev->next = curr;
}
prev = curr;
curr = curr->next;
}
}
}

    [使用dummyHead版] - 可以減少一個if, 來判斷swap頭結點的情況。

void bubbleSort(NodePtr head) {
bool flag = true;
NodePtr dummyHead = (NodePtr)malloc(sizeof(Node));
dummyHead->next = head;
while(flag) {
flag = false;
NodePtr curr = dummyHead->next;
NodePtr prev = dummyHead;
while(curr->next){
if(curr->val > curr->next->val) {
flag = true;
prev->next = curr = swap(curr,curr->next);
}
prev = curr;
curr = curr->next;
}
printf("flag:%d ",flag);
print_all(dummyHead->next);
}
}

  

  • 完整測資 : https://github.com/bittorrent3389/leetCode/blob/master/BubbleSort.c

[Interview] Bubble sort using singly-linked list的更多相关文章

  1. [LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点

    Implement an algorithm to delete a node in the middle of a singly linked list, given only access to ...

  2. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  3. LeetCode 206 Reverse a singly linked list.

    Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively. ...

  4. Bubble Sort (5775)

    Bubble Sort Problem Description   P is a permutation of the integers from 1 to N(index starting from ...

  5. Singly Linked List

    Singly Linked List Singly linked list storage structure:typedef struct Node{ ElemType data; struct N ...

  6. Bubble Sort [ASM-MIPS]

    # Program: Bubble sort # Language: MIPS Assembly (32-bit) # Arguments: 5 unordered numbers stored in ...

  7. HDU 5775 Bubble Sort(冒泡排序)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  8. Reverse a singly linked list

    Reverse a singly linked list. /** * Definition for singly-linked list. * struct ListNode { * int val ...

  9. 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)

    Bubble Sort 题意: 给你一个1~n的排列,问冒泡排序过程中,数字i(1<=i<=n)所到达的最左位置与最右位置的差值的绝对值是多少 题解: 数字i多能到达的最左位置为min(s ...

随机推荐

  1. 第四讲 自定义Realm来实现身份认证

    1.jdbcReam已经实现了从数据库中获取用户的验证信息,但是jdbcRealm灵活性太差.如果要实现自己的一些特殊应用时,将不能支持.这时,可以通过自定义Realm来实现身份的认证功能. 2.Re ...

  2. C# 获得系统环境

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. k8s存储

    ·几种存储类型 1)emptyDir emptyDir Volume的生命周期与Pod一致,Pod中的所有容器都可以共享Volume,它们可以指定各自的mount路径,当Pod从节点删除时,Volum ...

  4. java 生成时机时间

    import java.text.SimpleDateFormat;  import java.util.Date;  import java.util.Random;  public class t ...

  5. python+selenium+pytest+html报告

    背景:python+selenium+pytest+html报告 环境:我的是本机的Jenkins配置本机的代码 前提:要下载好HTML Publisher plugin插件[系统管理>管理插件 ...

  6. CentOS下安装Chrome浏览器中文显示为方框

    执行如下三条命令 yum groupinstall "X Window System" -y yum -y groupinstall chinese-support yum -y  ...

  7. [CSP-S模拟测试]:石头剪刀布(rps)(概率DP)

    题目传送门(内部题9) 输入格式 第一行一个整数$n$.接下来$n$行每行$3$个非负整数$r_i,p_i,s_i$. 输出格式 一行一个实数表示答案.当你的答案与标准答案的绝对或相对误差不超过${1 ...

  8. 浅谈关于SQL优化的思路

    零.为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 一.观察 MySQL优 ...

  9. zhanghao

    账号:wx8b9ddd1c943ce95f 密码:fa72de9a1721849edc7f41f8a81019e5

  10. Newtonsoft.Json源码的solution打开之后,无法加载project

    无法加载项目 https://github.com/JamesNK/Newtonsoft.Json C:\repository\GitHub\Other\Newtonsoft.Json\Src\New ...