merge sort 1 array and for each change it must effect another list
I have 2 arrays:
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I need to sort date, but the indexes of the 2 lists need to be linked; i.e for each change I make to dates I must do for prices.
The output expected is
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I am currently using a bubble sort but that is too slow for my needs.
python linked-list mergesort
|
show 2 more comments
I have 2 arrays:
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I need to sort date, but the indexes of the 2 lists need to be linked; i.e for each change I make to dates I must do for prices.
The output expected is
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I am currently using a bubble sort but that is too slow for my needs.
python linked-list mergesort
1
dates, prices = zip(*sorted(zip(dates, prices)))
– SilverSlash
Nov 11 at 17:31
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49
|
show 2 more comments
I have 2 arrays:
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I need to sort date, but the indexes of the 2 lists need to be linked; i.e for each change I make to dates I must do for prices.
The output expected is
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I am currently using a bubble sort but that is too slow for my needs.
python linked-list mergesort
I have 2 arrays:
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I need to sort date, but the indexes of the 2 lists need to be linked; i.e for each change I make to dates I must do for prices.
The output expected is
dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]
I am currently using a bubble sort but that is too slow for my needs.
python linked-list mergesort
python linked-list mergesort
edited Nov 11 at 17:54
eyllanesc
73.4k103056
73.4k103056
asked Nov 11 at 17:28
Luka Bediashvili
33
33
1
dates, prices = zip(*sorted(zip(dates, prices)))
– SilverSlash
Nov 11 at 17:31
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49
|
show 2 more comments
1
dates, prices = zip(*sorted(zip(dates, prices)))
– SilverSlash
Nov 11 at 17:31
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49
1
1
dates, prices = zip(*sorted(zip(dates, prices)))– SilverSlash
Nov 11 at 17:31
dates, prices = zip(*sorted(zip(dates, prices)))– SilverSlash
Nov 11 at 17:31
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49
|
show 2 more comments
1 Answer
1
active
oldest
votes
Perhaps it would be easiest to store the original locations:
new_dates=
indices=
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
new_dates.append(date)
indices.append(i)
new_prices=
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
new_prices.append(price)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251323%2fmerge-sort-1-array-and-for-each-change-it-must-effect-another-list%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Perhaps it would be easiest to store the original locations:
new_dates=
indices=
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
new_dates.append(date)
indices.append(i)
new_prices=
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
new_prices.append(price)
add a comment |
Perhaps it would be easiest to store the original locations:
new_dates=
indices=
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
new_dates.append(date)
indices.append(i)
new_prices=
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
new_prices.append(price)
add a comment |
Perhaps it would be easiest to store the original locations:
new_dates=
indices=
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
new_dates.append(date)
indices.append(i)
new_prices=
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
new_prices.append(price)
Perhaps it would be easiest to store the original locations:
new_dates=
indices=
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
new_dates.append(date)
indices.append(i)
new_prices=
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
new_prices.append(price)
edited Nov 11 at 19:41
answered Nov 11 at 19:23
MegaBluejay
35118
35118
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251323%2fmerge-sort-1-array-and-for-each-change-it-must-effect-another-list%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
dates, prices = zip(*sorted(zip(dates, prices)))– SilverSlash
Nov 11 at 17:31
I suggest combining the two lists into a single list. When you have related data, they should be in a class or a dictionary. Then you can sort the entire data with a single function call.
– Code-Apprentice
Nov 11 at 17:37
first off this is a great solution and i hate not knowing about it but i really need it a merge sort algorithm to do this
– Luka Bediashvili
Nov 11 at 17:40
@LukaBediashvili you mean you have to write the mergesort yourself?
– SilverSlash
Nov 11 at 17:44
@SilverSlash yes for collage i will but i have no idea how to do this kind of sort
– Luka Bediashvili
Nov 11 at 17:49