[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 ... 
随机推荐
- springMvc几个常用注解
			浏览器本省就是get ,post 可以用form表单 @RequestMapping: 作用:用来映射请求的url @RequestMapping注解的多个属性是与(且)的关系,必须同时满足 位置:可 ... 
- C++ CMake 入门实战[转载]
			C++ CMake 入门实战 2016-11-05 CMake用于跨平台的编译系统,对于通常的c/c++工程,都是通过make来进行编译的,CMake可以通过指令生成Makefile文件来指导整个项目 ... 
- 卷积神经网络 CNN 系列模型阐述
			http://www.sohu.com/a/134347664_642762 Lenet,1986年 https://github.com/BVLC/caffe/blob/master/example ... 
- tuple&dict
			# n = (12,[23,56]) # n[1][0] = 89 #元组不可修改,但元组内部的列表内部的元素可以修改,但内部的列表的内部也是元组,则他不可修改 # print(n) # n = (1 ... 
- C++11的新特性:右值引用
			先看代码 #include "pch.h" #include <iostream> #include <string> using namespace st ... 
- less:避免编译
			.box { width: ~"calc(300px - 30px)"; } 编译成css .box { width: calc(300px - 30px); } importan ... 
- 函数&&变量
			#*- encoding=utf-8 -*import sysprint(sys.getdefaultencoding()) def test(x,y,z): print(x) print(y) pr ... 
- CreateMutex函数 (转)
			CreateMutex函数 该函数找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. CreateMutex()函数可用来创建一个有名或无名的互斥量对象,其函数原型为: HANDLE ... 
- 洛谷 P1407 稳定婚姻
			问题描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关.25岁的姗姗和男友谈恋爱半年就结婚,结婚不到两 ... 
- NIO编程之多客户端聊天系统
			1. 服务端 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; im ... 
