# Thread: finding possible ordering set of vector

1. Member Join Date
Dec 2009
Posts
59
Rep Power
0

## finding possible ordering set of vector

hello
I want to do some reordering of elements in a vector (vect_temp) according to criteria:
after finding the first element I need to find the next element after calling functions
Min_diff(vect_temp);
nex_minr(vect_temp,next_point);
the first function will generate the vector (vect_diff) of possible elements and also the second function will find vector ( vect_min) of elements
if element in the (vect_diff) is equal to the element in ( vect_min) then add this element into the ordered set with this equal element and continue ordering of complete vector vect(temp)
the problem is sometimes that many elements in vect_diff sometimes equal elements in vect_min so that I want to generate all possible ordering
I did the code that finds first equal element and continue ordering but the prolem is that I have sometimes muliple equal elements I don't know how to generate the solutions for the other multiple element

[code]
for (int y=0; y< vector_temp.size(); y++){
Min_diff(vect_temp);
nex_minr(vect_temp,next_point);
for (int i=0; i< vect_diff.size(); i++){
String element_min= vect_diff.get(i).toString();
if( vect_min.contains(element_min)){
_2nd_min_element= element_min;
vec_temp.removeElement(next_point);
next_point=_2nd_min_element;
i= vect_diff.size();
}// end if condition
} // end for (i)loop
}// end for (y) loop

[\code]
as I said before I don't have problem in finding first element or next element I just want to find all possible ordering set because at each time there is multiple element in vec_diff equal to multiple elements in vec_min I want to find all solutions for example first solution with first element in vec_diff equal to element in vec_min and second solution with second equal element and so on
I hope that I find solution to my problem
thanks alot  Reply With Quote

2. Member Join Date
Dec 2009
Posts
59
Rep Power
0

## sorry the code is
Java Code:
```for (int y=0; y< vector_temp.size(); y++){
Min_diff(vect_temp);
nex_minr(vect_temp,next_point);
for (int i=0; i< vect_diff.size(); i++){
String element_min= vect_diff.get(i).toString();
if( vect_min.contains(element_min)){
_2nd_min_element= element_min;
vec_temp.removeElement(next_point);
next_point=_2nd_min_element;
i= vect_diff.size();
}// end if condition
} // end for (i)loop
}// end for (y) loop```  Reply With Quote

3. ## I read your explanation several times but it seems that I'm too stupid to understand it; can you supply a small example please?

kind regards,

Jos  Reply With Quote

4. Member Join Date
Dec 2009
Posts
59
Rep Power
0

## the problem is as follows: I have vector named [COLOR="rgb(255, 0, 255)"]vect_temp[/COLOR] and I want to reorder elements in that vector
the function Min_diff(vect_temp , next_point)
will find all possible next elements giving it previous element which is [COLOR="rgb(255, 0, 255)"]next_point [/COLOR] and save them in vector named [COLOR="rgb(255, 0, 255)"]vect_diff[/COLOR]
the other function which is [COLOR="rgb(255, 0, 255)"]nex_min(vect_temp, next_point)[/COLOR] which finds the next possible elements and save them in vector named[COLOR="rgb(255, 0, 255)"] vect_min[/COLOR]
I'm able to find only one solution but I want to find all possible
let me give an example:
let the vect_temp contains elements [3,2,1,7,9]
I find the first element to be 
after calling function Min_diff, the vect_diff will contain [2,9]
after calling function nex_min, the vect_min will contain [2,9]
I have to save 2 in the vec_ordering so it contains [3,2] then calling functions Min_diff and nex_min to find next element of 2 and if I find next element of 2 I have to add it in the reodering vector
this is only one solution which I'm able to find my problem is that there is multiple elements in vect_diff and vect_min are equal the second solution will be is saving 9 instead of 2 so it will be [3,9] and then finding next elements util the reordering is performed for all vect_temp

I hope now that you can understand me
as I said I want to find all possible solutions each time vect_diff and vect_min generate multiple equal elements I have to first for the first equal element and then calling functions to perform the reordering and get solution then perform ordering if you add other equal elements

the code I made for only one solution is:
Java Code:
```for (int y = 0; y < vect_temp.size(); y++) {
Min_diff(vect_temp);
nex_minr(vect_temp, next_point);
for (int i = 0; i < vect_diff.size(); i++) {
String element_min = vect_diff.get(i).toString();
if (vect_min.contains(element_min)) {
_2nd_min_element = element_min;
vec_temp.removeElement(next_point);
next_point = _2nd_min_element;
i = vect_diff.size();
}// end if condition
} // end for (i)loop
}// end for (y) loop```
thanks alot waiting for the answers  Reply With Quote

5. Member Join Date
Dec 2009
Posts
59
Rep Power
0

## hello everyone
-I have problem in finding all possible solutions for reordering of vector.

-I have vector named (vect_temp) and I want to find all possible reordering of this vector.

-I have function named Min_diff(vect_temp,next_point) works as follows : I should gave it an element (next_point) in the vector (vect_temp) and it must generate the vector (vect_diff) that contains all possible elements next elements.

-The function nex_min(vect_temp,next_point) works as follows : I should gave it an element (next_point) in the vector (vect_temp) and it must generate the vector (vect_min) that contains all possible elements next elements.

-reordering critriea:
-Min_diff(vect_temp,next_point) and nex_min(vect_temp,next_point) and (next_point) in this first iteration is equal to any selected element in the (vect_temp). after calling the functions, if element in the (vect_diff) is equal to the element in ( vect_min) then add this element into the ordered set [ vec_ordering] and call functions Min_diff(vect_temp,next_point) and nex_min(vect_temp,next_point) again , next_point now is the equal to the element that we have been added in the previous step into the ordered set [ vec_ordering] and repeat this process until all elements in (vect_temp) are ordered according to this criteria.

- I'm able to do reordering according to the cirtira above and find one solution. but the problem is that if (vect_diff) contains many elements that equal to many elements in ( vect_min), in this case I need to do reordering for the first equal element and this will be one solution and then find reordering for the next equal element and so on.

let's consider this example:
- let (vect_temp) contains element [5,9,7,3,1]
- for the firs iteration let the next_point equal to 7
- after calling function Min_diff(vect_temp,next_point), then (vect_diff) will contain [ 5,9,3]
- after calling function nex_min(vect_temp,next_point), then ( vect_min) will contain [ 5,9]
so for now (vect_diff) and ( vect_min) will have two equal elements.
- the first solution must be that fist take the first equal element and do reordering such that ordered set [ vec_ordering] will equal to [7,5] then call functions Min_diff(vect_temp,next_point), and nex_min(vect_temp,next_point) again. the( next_point) in this iteration is qual to 5, these funtions will find next elements, let's consider that (vect_diff) and ( vect_min) will have equal element  then add this element to the ordered set [ vec_ordering] and repeat calling functions util all elments in (vect_temp) are added to the ordered set [ vec_ordering]. This will be one solution. now the second solution will be is to take second equal elment  instead of  and continue calling functions and finding ordered list.
so that each time vect_diff and vect_min will have many equal elements, then do reordering for first equal element this is one solution and then do reordering for the second equal element and so on.

-my code that can only find one solution that takes only first equal element in (vect_diff) and ( vect_min) and continue ordering is below
Java Code:
```for (int y = 0; y < vect_temp.size(); y++) {
Min_diff(vect_temp);
nex_min(vect_temp, next_point);
for (int i = 0; i < vect_diff.size(); i++) {
String element_min = vect_diff.get(i).toString();
if (vect_min.contains(element_min)) {
_2nd_min_element = element_min;
vec_temp.removeElement(next_point);
next_point = _2nd_min_element;
i = vect_diff.size();
}// end if condition
} // end for (i)loop
}// end for (y) loop```
I hope that someone can answer me how to find all posssible reordering set it is urgent pleasssssse  Reply With Quote

6. ##  Originally Posted by sara12345 I hope that someone can answer me how to find all posssible reordering set it is urgent pleasssssse
I still don't understand your explanation, but if you want all orders (permutations) of a sequence p_1, p_2, p_3 ... p_n the following iterative algorithm gives you a next permutation given a current permutation:

1) find the largest i such that p_i < p_(i+1)
2) if no such i exist, stop
3) find the largest j > i such that p_i < p_j (such j always exists)
4) swap p_i and p_j
5) reverse the sequence p_(i+1), p_(i+2) ... p_n

For example let the current permutation be acedb, so i == 2 (c < e) and
j == 4 (c < d); swap p_i and p_j: adecb. and reverse the sequence to the right of i: adbce; this is your next permutation in lexicographical order. This algorithm also works with duplicates in the sequence.

kind regards,

Jos
Last edited by JosAH; 03-16-2010 at 03:06 PM.  Reply With Quote

7. Moderator   Join Date
Feb 2009
Location
New Zealand
Posts
4,716
Rep Power
18

## Also at forums.sun.com  Reply With Quote

8. Member Join Date
Dec 2009
Posts
59
Rep Power
0

##   Reply With Quote