public void tournamentsort(int[] a){
		int nNodes = 1;
		int nTreeSize;
		
		
		while(nNodes < a.length){
			nNodes *= 2;
		}
		
		nTreeSize = 2 * nNodes - 1;
		Node[] nodes = new Node[nTreeSize];
		
		int i;
		int idx;
		
		for( i = nNodes - 1; i < nTreeSize; i++){ 
			idx = i - (nNodes - 1); 
			if(idx < a.length){
				nodes[i] = new Node(a[idx], i); 
			}else {
				nodes[i] = new Node(Integer.MAX_VALUE, -1);
			}
		}
		
		for (i = nNodes - 2; i >= 0; i--) {
	
			nodes[i] =  new Node();
			if(nodes[i * 2 + 1].data < nodes[i * 2 + 2].data)  {
				nodes[i] = nodes[i*2 + 1];
			}else {
				 nodes[i] = nodes[i*2 + 2];
			}
		}
		
		for (i = 0; i < a.length; i++) {
			a[i] = nodes[0].data;
			nodes[nodes[0].id].data = Integer.MAX_VALUE; 
			Adjust(nodes, nodes[0].id);
		}
	
	}