uGIF.NeuQuant.Inxbuild C# (CSharp) Method

Inxbuild() private method

private Inxbuild ( ) : void
return void
        void Inxbuild()
        {
            int i, j, smallpos, smallval;
            int[] p;
            int[] q;
            int previouscol, startpos;

            previouscol = 0;
            startpos = 0;
            for (i = 0; i < netsize; i++) {
                p = network [i];
                smallpos = i;
                smallval = p [1]; /* index on g */
                /* find smallest in i..netsize-1 */
                for (j = i + 1; j < netsize; j++) {
                    q = network [j];
                    if (q [1] < smallval) { /* index on g */
                        smallpos = j;
                        smallval = q [1]; /* index on g */
                    }
                }
                q = network [smallpos];
                /* swap p (i) and q (smallpos) entries */
                if (i != smallpos) {
                    j = q [0];
                    q [0] = p [0];
                    p [0] = j;
                    j = q [1];
                    q [1] = p [1];
                    p [1] = j;
                    j = q [2];
                    q [2] = p [2];
                    p [2] = j;
                    j = q [3];
                    q [3] = p [3];
                    p [3] = j;
                }
                /* smallval entry is now in position i */
                if (smallval != previouscol) {
                    netindex [previouscol] = (startpos + i) >> 1;
                    for (j = previouscol + 1; j < smallval; j++)
                        netindex [j] = i;
                    previouscol = smallval;
                    startpos = i;
                }
            }
            netindex [previouscol] = (startpos + maxnetpos) >> 1;
            for (j = previouscol + 1; j < 256; j++)
                netindex [j] = maxnetpos; /* really 256 */
        }