Exemplo n.º 1
0
Arquivo: 0.cs Projeto: qifanyyy/CLCDSA
    public PrioElem Pop()
    {
        PrioElem result = arr[0];

        arr[0] = arr[arr.Count - 1];
        arr.RemoveAt(arr.Count - 1);
        int i = 0;

        while (true)
        {
            int minidx = i;
            if (2 * i + 1 < arr.Count && arr[2 * i + 1].time < arr[minidx].time)
            {
                minidx = 2 * i + 1;
            }
            if (2 * i + 2 < arr.Count && arr[2 * i + 2].time < arr[minidx].time)
            {
                minidx = 2 * i + 2;
            }
            if (minidx == i)
            {
                break;
            }
            PrioElem t = arr[i];
            arr[i]      = arr[minidx];
            arr[minidx] = t;
            i           = minidx;
        }
        return(result);
    }
Exemplo n.º 2
0
Arquivo: 0.cs Projeto: qifanyyy/CLCDSA
    public void Add(PrioElem elm)
    {
        int i = arr.Count;

        arr.Add(elm);
        while (i > 0 && arr[(i - 1) / 2].time > elm.time)
        {
            PrioElem t = arr[(i - 1) / 2];
            arr[(i - 1) / 2] = arr[i];
            arr[i]           = t;
            i = (i - 1) / 2;
        }
    }