merge sort 1 array and for each change it must effect another list










-1














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.










share|improve this question



















  • 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














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.










share|improve this question



















  • 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








-1







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.










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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













  • 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













1 Answer
1






active

oldest

votes


















0














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)





share|improve this answer






















    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
    );



    );













    draft saved

    draft discarded


















    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









    0














    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)





    share|improve this answer



























      0














      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)





      share|improve this answer

























        0












        0








        0






        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)





        share|improve this answer














        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)






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 11 at 19:41

























        answered Nov 11 at 19:23









        MegaBluejay

        35118




        35118



























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Kleinkühnau

            Makov (Slowakei)

            Deutsches Schauspielhaus