0
Trouble with sorting!
Recently, I was tasked with implementing the cocktail sorting algorithm into a class and I am having a problem with the sorting aspect itself, I've looked at other examples of code (not in the form of a class) to help me with writing it but I am still stuck. https://code.sololearn.com/c8FOA8BYRI9b/?ref=app.
31 Answers
+ 1
https://code.sololearn.com/cF1us120URyL/?ref=app
0
Look at my page code -> sort(corrected) -> I made your code work
0
Thank you!!
0
You are welcome!
0
I do have a question (possibly questions) though, the first being do the changes you made still conform to the cocktail sorting algorithm?
0
Also, I don't really understand how the two for loops work
0
Oh and lastly (for now at least), why is
cin >> v;//+++
array[l] = v;//+++
better than cin >> array{l}
0
To the first question, yes they still conform.
To the second question, why two for loops?
Assume you have an unsorted array b with 4 elements.
int b[4] = {5,1,7,4}
One for loop would do one round with the range of 5. 5 compared with 1(swap), 5 with 7, 7 with 4(swap) Result?
b is now : {1,5,4,7}
It still not completely unsorted right? Let us do another round with range 5. 1 compared with 5, 5 with 4(swap), 5 with 7
how to reach more rounds in rounds. for loop in a for loop.
b is now {1,4,5,7} but with other bigger lists you will always need to do as many rounds as the length of the array, so that the sorting algorithm does not overlook any element.
0
To the 3rd question. I did because I just wanted to be sure that all possible small mistakes (for me) are not in my way. Otherwise you could use your style of doing it.
0
sorry if I'm taking your time but with the for loop, when it's going multiple rounds, doesn't it only do so in one direction and not in both directions? for example:
b[4] = {5, 1, 7, 4} after it swaps and then the list becomes b[4] = {1, 5, 4, 7}, shouldn't it start swapping from the back i.e 7 compared with 4,
then 4 compared with 5 (swap)?
0
Yes you right. I swithed the code to a bubble sort :( sorry. But I can fix it
0
And no you are not taking of my time :)
0
alright cool, I'll be here
0
oh by the way I was able to edit the original code I had sent so that it kinda works better but it still has some problems
https://code.sololearn.com/cQ6Lw5EeIceA/?ref=app
0
Oh great. But you have to define a function sort.
0
I did define a sort function, it's called cocktailsort
0
In line 58 you should type c1.cocktailsort() instead of c1.sort()
0
it still "works", the problem is out of the 8 numbers I inputted, only 7 were sorted, the 8th dissappeared
0
in line 14 for(..; i< end;..) without the equal sign between i and end
in line 36 for(..; i > head -1;..) also no equal sign between i and head and head-1
0
I tried it (while keeping the equal sign between i and head) and it works! If I take away the equal sign every second element that I enter into my array comes 1st and then all the other elements are sorted