Esempio n. 1
0
        private void PercolateDown(int hole)
        {
            PriorityQueueElement obj = data[hole];

            while ((hole * 2 + 1) < data.Count)
            {
                int child = hole * 2 + 1;
                if (child != data.Count - 1)
                {
                    if (data[child + 1].CompareTo(data[child]) < 0)
                    {
                        child++;
                    }
                }
                PriorityQueueElement childObj = data[child];
                if (childObj.CompareTo(obj) < 0)
                {
                    data[hole]       = childObj;
                    childObj.PQIndex = hole;
                    hole             = child;
                }
                else
                {
                    break;
                }
            }
            data[hole]  = obj;
            obj.PQIndex = hole;
        }
Esempio n. 2
0
		public void Insert(PriorityQueueElement obj)
		{
			int hole = data.Count;
			data.Add(obj);
			while (hole>0 && obj.CompareTo(data[(hole-1)/2])<0)
			{
				data[hole] = data[(hole-1)/2];
				data[hole].PQIndex = hole;
				hole = (hole-1) / 2;
			}
			data[hole] = obj;
			obj.PQIndex = hole;
		}
Esempio n. 3
0
        public void Insert(PriorityQueueElement obj)
        {
            int hole = data.Count;

            data.Add(obj);
            while (hole > 0 && obj.CompareTo(data[(hole - 1) / 2]) < 0)
            {
                data[hole]         = data[(hole - 1) / 2];
                data[hole].PQIndex = hole;
                hole = (hole - 1) / 2;
            }
            data[hole]  = obj;
            obj.PQIndex = hole;
        }
Esempio n. 4
0
        private void PercolateUp(int hole)
        {
            PriorityQueueElement obj = data[hole];

            while (hole > 0 && obj.CompareTo(data[(hole - 1) / 2]) < 0)
            {
                int parent = (hole - 1) / 2;
                PriorityQueueElement parentObj = data[parent];
                data[hole]        = data[parent];
                parentObj.PQIndex = hole;
                hole = parent;
            }
            data[hole]  = obj;
            obj.PQIndex = hole;
        }