New files
[jalview.git] / src / MCview / Zsort.java
1 package MCview;\r
2 \r
3 import java.util.*;\r
4 \r
5 public class Zsort {\r
6 \r
7   public static void Zsort(Vector bonds) {\r
8 \r
9     sort(bonds,0,bonds.size()-1);\r
10   }\r
11 \r
12 \r
13 \r
14   public static void sort(Vector bonds,int p, int r) {\r
15     int q;\r
16 \r
17     if (p < r) {\r
18       q = partition(bonds,p,r);\r
19       sort(bonds,p,q);\r
20       sort(bonds,q+1,r);\r
21     }\r
22   }\r
23 \r
24   private static int partition(Vector bonds, int p, int r) {\r
25     float x = ((Bond)bonds.elementAt(p)).start[2];\r
26     int i = p-1;\r
27     int j = r+1;\r
28 \r
29     while(true) {\r
30       do {\r
31         j = j-1;\r
32       } while (j >= 0  && ((Bond)bonds.elementAt(j)).start[2] > x);\r
33 \r
34       do {\r
35         i = i+1;\r
36       } while (i < bonds.size() && ((Bond)bonds.elementAt(i)).start[2] < x);\r
37 \r
38       if ( i < j) {\r
39         Bond tmp = (Bond)bonds.elementAt(i);\r
40         bonds.setElementAt(bonds.elementAt(j),i);\r
41         bonds.setElementAt(tmp,j);\r
42       } else {\r
43         return j;\r
44       }\r
45     }\r
46   }\r
47 }\r
48 \r
49 \r
50 \r