void exhaustStack() { while (stackSize > 1) { mergeAt(0); } }
void ensureInvariants() { while (stackSize > 1) { final int runLen0 = runLen(0); final int runLen1 = runLen(1); if (stackSize > 2) { final int runLen2 = runLen(2); if (runLen2 <= runLen1 + runLen0) { // merge the smaller of 0 and 2 with 1 if (runLen2 < runLen0) { mergeAt(1); } else { mergeAt(0); } continue; } } if (runLen1 <= runLen0) { mergeAt(0); continue; } break; } }
void exhaustStack() { while (stackSize > 1) { mergeAt(0); } }
void exhaustStack() { while (stackSize > 1) { mergeAt(0); } }
void exhaustStack() { while (stackSize > 1) { mergeAt(0); } }
void ensureInvariants() { while (stackSize > 1) { final int runLen0 = runLen(0); final int runLen1 = runLen(1); if (stackSize > 2) { final int runLen2 = runLen(2); if (runLen2 <= runLen1 + runLen0) { // merge the smaller of 0 and 2 with 1 if (runLen2 < runLen0) { mergeAt(1); } else { mergeAt(0); } continue; } } if (runLen1 <= runLen0) { mergeAt(0); continue; } break; } }
void ensureInvariants() { while (stackSize > 1) { final int runLen0 = runLen(0); final int runLen1 = runLen(1); if (stackSize > 2) { final int runLen2 = runLen(2); if (runLen2 <= runLen1 + runLen0) { // merge the smaller of 0 and 2 with 1 if (runLen2 < runLen0) { mergeAt(1); } else { mergeAt(0); } continue; } } if (runLen1 <= runLen0) { mergeAt(0); continue; } break; } }
void ensureInvariants() { while (stackSize > 1) { final int runLen0 = runLen(0); final int runLen1 = runLen(1); if (stackSize > 2) { final int runLen2 = runLen(2); if (runLen2 <= runLen1 + runLen0) { // merge the smaller of 0 and 2 with 1 if (runLen2 < runLen0) { mergeAt(1); } else { mergeAt(0); } continue; } } if (runLen1 <= runLen0) { mergeAt(0); continue; } break; } }