Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
1
170050086-170050097-170050100-git
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
RANJANA B KASANGERI
170050086-170050097-170050100-git
Commits
252d08e3
Commit
252d08e3
authored
Aug 27, 2018
by
Varshitha Mannem
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update merge-sort to reflect API update
parent
384d5fcd
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
64 additions
and
45 deletions
+64
-45
sorting.cpp
sorting.cpp
+64
-45
No files found.
sorting.cpp
View file @
252d08e3
#include
"sorting.h"
#include"sorting.h"
vector
<
int
>
merge
(
vector
<
int
>
left
,
vector
<
int
>
right
)
void
merge
(
vector
<
int
>&
v
,
int
first
,
int
mid
,
int
last
)
{
vector
<
int
>
result
;
while
((
int
)
left
.
size
()
>
0
||
(
int
)
right
.
size
()
>
0
)
{
if
((
int
)
left
.
size
()
>
0
&&
(
int
)
right
.
size
()
>
0
)
{
if
((
int
)
left
.
front
()
<=
(
int
)
right
.
front
())
{
result
.
push_back
((
int
)
left
.
front
());
left
.
erase
(
left
.
begin
());
}
else
{
result
.
push_back
((
int
)
right
.
front
());
right
.
erase
(
right
.
begin
());
}
}
else
if
((
int
)
left
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
(
int
)
left
.
size
();
i
++
)
result
.
push_back
(
left
[
i
]);
break
;
}
else
if
((
int
)
right
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
(
int
)
right
.
size
();
i
++
)
result
.
push_back
(
right
[
i
]);
break
;
// temporary vector to merge the sorted sublists
vector
<
int
>
tempVector
;
int
indexA
,
indexB
,
indexV
;
// set indexA to scan sublistA (index range [first,mid)
// and indexB to scan sublistB (index range [mid, last)
indexA
=
first
;
indexB
=
mid
;
// while both sublists are not exhausted, compare v[indexA] and
// v[indexB]copy the smaller to vector temp using push_back()
while
(
indexA
<
mid
&&
indexB
<
last
)
if
(
v
[
indexA
]
<
v
[
indexB
])
{
tempVector
.
push_back
(
v
[
indexA
]);
// copy element to temp
indexA
++
;
// increment indexA
}
else
{
tempVector
.
push_back
(
v
[
indexB
]);
// copy element to temp
indexB
++
;
// increment indexB
}
}
return
result
;
// copy the tail of the sublist that is not exhausted
while
(
indexA
<
mid
)
{
tempVector
.
push_back
(
v
[
indexA
]);
indexA
++
;
}
while
(
indexB
<
last
)
{
tempVector
.
push_back
(
v
[
indexB
]);
indexB
++
;
}
// copy vector tempVector using indexV to vector v using indexA
// which is initially set to first
indexA
=
first
;
// copy elements from temporary vector to original list
for
(
indexV
=
0
;
indexV
<
tempVector
.
size
();
indexV
++
)
{
v
[
indexA
]
=
tempVector
[
indexV
];
indexA
++
;
}
}
vector
<
int
>
sort_custom
(
vector
<
int
>
m
)
vector
<
int
>
sort_custom
(
vector
<
int
>
v
,
int
first
,
int
last
)
{
if
(
m
.
size
()
<=
1
)
return
m
;
vector
<
int
>
left
,
right
,
result
;
int
mid
=
((
int
)
m
.
size
()
+
1
)
/
2
;
for
(
int
i
=
0
;
i
<
mid
;
i
++
)
{
left
.
push_back
(
m
[
i
]);
}
for
(
int
i
=
mid
;
i
<
(
int
)
m
.
size
();
i
++
)
{
right
.
push_back
(
m
[
i
]);
}
left
=
sort_custom
(
left
);
right
=
sort_custom
(
right
);
result
=
merge
(
left
,
right
);
return
result
;
}
// if the sublist has more than 1 element continue
if
(
first
+
1
<
last
)
{
// for sublists of size 2 or more, call mergeSort()
// for the left and right sublists and then
// merge the sorted sublists using merge()
int
midpt
=
(
last
+
first
)
/
2
;
sort_custom
(
v
,
first
,
midpt
);
sort_custom
(
v
,
midpt
,
last
);
merge
(
v
,
first
,
midpt
,
last
);
}
return
v
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment