Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
1
18305R002-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
KERKAR NEERAJ VIKAS SNEHA
18305R002-git
Commits
09db1b5c
Commit
09db1b5c
authored
Sep 24, 2018
by
Neeraj Kerkar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
changed implementation to merge sort
parent
bbf91dfe
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
60 additions
and
19 deletions
+60
-19
sorting.cpp
sorting.cpp
+60
-19
No files found.
sorting.cpp
View file @
09db1b5c
...
...
@@ -2,22 +2,63 @@
using
namespace
std
;
vector
<
int
>
sort_custom
(
vector
<
int
>
a
)
{
bool
swapp
=
true
;
while
(
swapp
)
{
swapp
=
false
;
for
(
int
i
=
0
;
i
<
a
.
size
()
-
1
;
i
++
)
{
if
(
a
[
i
]
>
a
[
i
+
1
]
)
{
a
[
i
]
+=
a
[
i
+
1
];
a
[
i
+
1
]
=
a
[
i
]
-
a
[
i
+
1
];
a
[
i
]
-=
a
[
i
+
1
];
swapp
=
true
;
}
}
}
return
a
;
}
vector
<
int
>
merge
(
const
vector
<
int
>&
left
,
const
vector
<
int
>&
right
)
{
// Fill the resultant vector with sorted results from both vectors
vector
<
int
>
result
;
unsigned
left_it
=
0
,
right_it
=
0
;
while
(
left_it
<
left
.
size
()
&&
right_it
<
right
.
size
())
{
// If the left value is smaller than the right it goes next
// into the resultant vector
if
(
left
[
left_it
]
<
right
[
right_it
])
{
result
.
push_back
(
left
[
left_it
]);
left_it
++
;
}
else
{
result
.
push_back
(
right
[
right_it
]);
right_it
++
;
}
}
// Push the remaining data from both vectors onto the resultant
while
(
left_it
<
left
.
size
())
{
result
.
push_back
(
left
[
left_it
]);
left_it
++
;
}
while
(
right_it
<
right
.
size
())
{
result
.
push_back
(
right
[
right_it
]);
right_it
++
;
}
return
result
;
}
vector
<
int
>
sort_custom
(
vector
<
int
>
vec
)
{
// Termination condition: List is completely sorted if it
// only contains a single element.
if
(
vec
.
size
()
==
1
)
{
return
vec
;
}
// Determine the location of the middle element in the vector
std
::
vector
<
int
>::
iterator
middle
=
vec
.
begin
()
+
(
vec
.
size
()
/
2
);
vector
<
int
>
left
(
vec
.
begin
(),
middle
);
vector
<
int
>
right
(
middle
,
vec
.
end
());
// Perform a merge sort on the two smaller vectors
left
=
sort_custom
(
left
);
right
=
sort_custom
(
right
);
return
merge
(
left
,
right
);
}
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