Short Arrays:
Array = randi(10,1,randi(6,1,1)+4)-5
This command will generate an array which you should be able to evaluate by hand (and also have your code evaluate for testing purposes).
Long Arrays:
Array = randi(200,1,randi(500,1,1)+50)-100
This command will generate an array which will be too large to evaluate by hand, but which your code should still work with.
Sort the given array
Remove the repeated values (as asked for extra credit)
Intialize solution vector
Find the last negative element in shorted array , assume its index be last_n
Outer loop
From 1^{st} element up to last negative element
First atom = array(I,i)
Inner loop
From last element to first positive element in array
Second atom = array (1,j)
Find the third element
Third element = 0- (first atom + second atom)
Check (third_elemnt <= second atom) % this step is to avoid repetition of same solution
Search the element inarray
If it is present add this to solution vector
Else proceed for next iteration
Close inner loop
Close outer loop
Advantage now there are no repeated results , the number of loops has been reduced using the algorithm.
Example
Input array = [5 -3 5 2 -4 -2 1 5 5 0]
sorted array = -4 -3 -2 0 1 2 5 5 5 5
Unique array and sorted = -4 -3 -2 0 1 2 5
Index of last negative number =3
Outer loop i=1:1:3
Inner loop j =7:-1:5
Output
sol =
-4 2 2
-3 5 -2
-3 2 1
-2 5 -3
-2 2 0
-2 1 1
There are no repeated solution
Each vector is unique.