Учитывая алгоритм здесь, посмотрите на сценарий, где я находится в "X" , происходит следующее:
Сценарий: я → "X" , "X" > "P"
1. swap("X", "Z"), gt--; // the value at i is now "Z", which is still > "P"
2. swap("Z", "Y"), gt--; // the value at i is now "Y", which is still > "P"
3. swap("Y", "C"), gt--; // Now we finally get a value at i "C" which is < "P"
// Now we can swap values at i and lt, and increrement them
4. swap("P", "C"), i++, lt++;
Почему мы не просто уменьшаем gt до gt до значения, которое равно < значение в lt ( "P" в этом случае), то мы обмениваем это значение со значением в i. Это сохранит операции свопинга.
Итак, если мы сделаем это для упомянутого выше сценария, мы сделаем следующее:
1. gt--
2. gt--
3. swap("X", "C"), gt--;
// Now we can swap values at i and lt, and increrement them
4. swap("P", "C"), i++, lt++;
Является ли эта чрезмерная замена необходимой для алгоритма? улучшает ли производительность в некотором роде? Если это улучшит производительность, как?
Если это не влияет на производительность, дайте правильное объяснение или доказательство того, почему это не влияет на производительность.
Кроме того, будет ли второй способ, упомянутый мной, повлиять на производительность каким-либо образом? пожалуйста, объясните, почему.
P.S. "Влияние на производительность", как используется выше, означает улучшение/ухудшение производительности.