aboutsummaryrefslogtreecommitdiff
path: root/ft_list_sort.s
blob: 1ab5485e904b68c8d822dec842f2418801e3005d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# **************************************************************************** #
#                                                                              #
#                                                         :::      ::::::::    #
#    ft_list_sort.s                                     :+:      :+:    :+:    #
#                                                     +:+ +:+         +:+      #
#    By: cacharle <marvin@42.fr>                    +#+  +:+       +#+         #
#                                                 +#+#+#+#+#+   +#+            #
#    Created: 2019/11/22 21:03:52 by cacharle          #+#    #+#              #
#    Updated: 2019/11/22 21:27:27 by cacharle         ###   ########.fr        #
#                                                                              #
# **************************************************************************** #

.globl _ft_list_sort

# void ft_list_sort(t_list **begin_list, int (*cmp)());
_ft_list_sort:
	push rbp
	mov rbp, rsp

	call _ft_list_size
	cmp eax, 2
	jl FT_LIST_SORT_END

	# split in half
	# _ft_list_sort both half
	# merge_sorted


	FT_LIST_SORT_END:
		pop rbp
		ret


merge_sorted:
#ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
#{
#	ListNode *merged = NULL;
#
#	if (l1 == NULL && l2 == NULL)
#		return NULL;
#	if (l1 == NULL)
#		return l2;
#	if (l2 == NULL)
#		return l1;
#	merged = l1->val < l2->val ? l1 : l2;
#	if (l1->val < l2->val)
#		merged->next = mergeTwoLists(l1->next, l2);
#	else
#		merged->next = mergeTwoLists(l1, l2->next);
#	return merged;
#}