In this video what do they mean by n-2?

At 2:05 of this video, they say that in order to do a bubble sort on an array of n elements, first you perform n-1 comparisons, and then you perform n-2 comparisons. I don't understand why the comparisons become fewer and fewer with each round of comparisons. Is it because the biggest number in the array makes it to the end of the array after the first round of comparisons?

http://www.youtube.com/watch?v=P00xJgWzz2c
shampouyaAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

phoffric\Commented:
>> Is it because the biggest number in the array makes it to the end of the array after the first round of comparisons?
Yes

After the first pass, the last entry is the largest element in the array. That means that this last element is in the correct sort position. If there were 100 elements to sort, then after the first pass, there are now only 99 elements to sort.

After the 2nd pass, the two largest elements are at the end of the array, so there are now only 98 elements left to sort.

Less numbers to sort in each pass --> less comparisons in each pass.
shampouyaAuthor Commented:
Oh ok thanks. And also, why is the sum of the comparison series equal to n(n-1)/2?

If you take a 5 element array, it seems like you would make (n-1)+(n-2)+(n-3)+1 comparisons, which is equal to 3n-5. How did they get n(n-1)/2?
TommySzalapskiCommented:
(n-1)+(n-2)+(n-3)+1 if n is 4 is 4 + 3 + 2 + 1 = 10
but also
n(n-1)/2 = 5(4)/2 = 10
So they are the same.
For any series 1 + 2 + 3 + 4 + ... + n-1 the sum is n(n-1)/2
CompTIA Security+

Learn the essential functions of CompTIA Security+, which establishes the core knowledge required of any cybersecurity role and leads professionals into intermediate-level cybersecurity jobs.

TommySzalapskiCommented:
The way you get it is as follows.
Set S = 1 + 2 + 3 + 4 + ... + n-1
So 2S = S + S = 1 + 2 + 3 + 4 + ... + n-1 + 1 + 2 + 3 + 4 + ... + n-1
Put the second S in reverse order and you have
    1  +   2  +   3+ ... + n-1
+ n-1 + n-2 + n-3 + ... + 1
= n   +   n   +   n   + ... + n

And there are n-1 terms in each S. So 2S = n(n-1) so S = n(n-1)/2
shampouyaAuthor Commented:
Hmmm I lost you on the second line, that was pretty complicated. Is there any way we can derive it with the Sum of 5 elements and the Sum of 6 elements like this?

      S = 3n-5
+    S = 4n-9
  2S = 7n -14
  2S = 7(n-2)
  S = 7(n-2)/2
TommySzalapskiCommented:
No. You can't derive it that way since the ns are different. In the first line n=5 and in the second n=6. But notice that 3(5)-5 = 10 and 4(6)-9 = 15 and those are the same numbers you get if you use n(n-1)/2

If it's hard to follow, you can just take my word for it, but I can try a different approach.
Again, say S = 1 + 2 + 3 + ... + n-2 +  n-1
Take the first (1) and last (n-1) and add them 1 + n-1 = n
Now take the second (2) and second to last (n-2) and add them 2 + n-2 = n

You'll notice that each pair sums to n. Also, since there are n-1 numbers, there will be (n-1)/2 pairs. So the total will be n(n-1)/2

For example for n=7
1 + 2 + 3 + 4 + 5 + 6
rearranges to
1 + 6 + 2 + 5 + 3 + 4
=
(1 + 6) + (2 + 5) + (3 + 4)
=
7 + 7 + 7
= 7(3)
7=n, 3=(n-1)/2
phoffric\Commented:
Integer Sum - Here is a 3.5 minute video for your enjoyment:
   http://www.khanacademy.org/video/alternate-proof-to-induction-for-integer-sum?playlist=Algebra

Tommy said it, but the video just animates it.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
shampouyaAuthor Commented:
That video was perfect, thanks. Tommy, phoffric, in case anyone asks you for an idiot-proof explanation of this in the future, I have provided one below. Let me know what you think:

If you have an array of n elements, you know that in a bubble sort you will make n-1 comparisons in the first round of comparisons. Then in the second round, because the biggest element is already in the last spot, you will only have n-2 comparisons. You continue with fewer comparisons in each round until in the final round of comparisons you only need 1 comparison (the first two elements of the array). So the first formula you see on the first line below for S(n) represents the number of comparisons you can expect from a bubble sort of size n (any size). Now, let's write the same formula for S(n) on the second line, but let's write it backwards. Now add those two formulas together and you will arrive at the third line below. Notice how every sum looks the same, n. You know that all in all, there will be (n -1) rounds of comparisons, so we can simplify the n+n+n+...n+n+n by just writing (n-1)*(n). Now divide each side of the equation by 2, and you get S(n) = n(n-1)/2. That's how many rounds of comparisons you'll have for a bubble sort of an array n-elements long.

S(n)  =  (n-1)  + (n-2)  + (n-3)  +...  3     +  2     + 1
S(n)  =   1      + 2       + 3       +... (n-3) + (n-2) + (n-1)
2S(n) =  n      + n       + n       + ...n      + n      + n
2S(n) = (n-1)(n)
S(n)   = n(n-1)/2
phoffric\Commented:
Being a devil's advocate, I was going to ask you to defend your view that there will be n-1 comparisons in the first round. But in your 2nd sentence, you actually do provide a good intuitive answer - "you only need 1 comparison (the first two elements of the array)". Well done!
shampouyaAuthor Commented:
thanks buddy!
phoffric\Commented:
Glad to have assisted.

Don't forget that you can split points to contributors that helped.
shampouyaAuthor Commented:
I appreciated the other answers but I couldn't understand them! Your video link was perfect.
TommySzalapskiCommented:
Your solution is actually the exact same as my first attempt in http:#a36921129 just formatted a bit better.
shampouyaAuthor Commented:
Tommy I'm sure you're a lot smarter than I am, but your solution was very hard to follow for the average person. The reason being, you mentioned 2S before you described what the reverse order of the original S was. Then, you didn't take the first S equation and the reverse-S equation and stack them on top of each other and align them so that it was clear that each element in the series summed up to n. And you also wrote the series as 1 + 2 + 3 +...n-1, when you should have written it as 1 + 2 + 3 +...n-3 + n-2 + n-1, because that makes it easier for the reader to see how the series ends and how it aligns up symmetrically with the reverse form of the series. I also don't think you mentioned the word sum in your solution 36921129 to indicate that the summing of two formulas was occurring. It's probably because you know the material so well that you took for granted some of the things that people like myself aren't clear on. But again, I appreciate your solution, and now that I read it again, it all makes sense!
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Algorithms

From novice to tech pro — start learning today.