[Interview] Bubble sort using singly-linked list
- Question :
- Bubble sort using singly-linked list
- 群暉面試題
- Idea :
- 在linked list 交換node與node時, 我們會想用換*next的方式。但是這裡是singly-linked list.
還會需要previously node。其實這裡單純直接換int val還比較簡單。不過算蠻偷吃步的
- 在linked list 交換node與node時, 我們會想用換*next的方式。但是這裡是singly-linked list.
- 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的更多相关文章
- [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 ...
- Java中的经典算法之冒泡排序(Bubble Sort)
Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...
- LeetCode 206 Reverse a singly linked list.
Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively. ...
- Bubble Sort (5775)
Bubble Sort Problem Description P is a permutation of the integers from 1 to N(index starting from ...
- Singly Linked List
Singly Linked List Singly linked list storage structure:typedef struct Node{ ElemType data; struct N ...
- Bubble Sort [ASM-MIPS]
# Program: Bubble sort # Language: MIPS Assembly (32-bit) # Arguments: 5 unordered numbers stored in ...
- HDU 5775 Bubble Sort(冒泡排序)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- Reverse a singly linked list
Reverse a singly linked list. /** * Definition for singly-linked list. * struct ListNode { * int val ...
- 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)
Bubble Sort 题意: 给你一个1~n的排列,问冒泡排序过程中,数字i(1<=i<=n)所到达的最左位置与最右位置的差值的绝对值是多少 题解: 数字i多能到达的最左位置为min(s ...
随机推荐
- eclipse没有Web项目和Server选项
(1)在Eclipse中菜单help选项中选择install new software选项 (2)在work with 栏中输入 http://download.eclipse.org/release ...
- Redis分布式锁【正确实现方式】
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...
- whetstone
https://www.cnblogs.com/findumars/p/4173040.html 下载源码:http://www.netlib.org/benchmark/whetstone.c ar ...
- $_POST 和 php://input 的区别
手册中摘取的几句话: 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时, ...
- 【串线篇】spring boot全面接管springMvc
一.Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:(WebMvcAutoC ...
- 解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题
https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id ...
- 前端之form表单与css(1)
目录 一.form表单 1.1表单的属性 1.2input 1.2.1form表单提交数据的两种方式 1.3select标签 1.4label标签 1.5textarea多行文本标签 二.CSS 2. ...
- Dubbo学习-8-dubbo启动时检查
启动时检查的作用如下: (1)Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true& ...
- CF286E Ladies' Shop FFT
题目链接 读完题后,我们发现如下性质: 在合法且和不超过 $m$ 的情况下,如果 $a_{i}$ 出现,则 $a_{i}$ 的倍数也必出现. 所以如果合法,只要对所有数两两结合一次就能得到所有 $a_ ...
- [STL]lower_bound&upper_bound
源码 lower_bound template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardI ...