交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
由一個編程經(jīng)典問題,交換兩個變量的值入手,理解程序的時空復雜度(以下均使用PHP代碼演示問題的解決方法)解決問題的方法一:1.方法文字描述:使用一個中間變量temp,實現(xiàn)兩個變量值的互換2.實現(xiàn)的具體代碼:<?php
//聲明兩個變量$a,$b
$a?=?$_GET['a'];
$b?=?$_GET['b'];
//打印沒有互換前,$a和$b
var_dump("未替換前:a={$a}?and?b={$b}");
//使用中間變量$temp實現(xiàn)$a和$b互換
$temp?=?$a;
$a?=?$b;
$b?=?$temp;
var_dump("使用temp中間變量替換后:a={$a}?and?b={$b}");
?>
3.此時時空復雜度
時間復雜度即程序運算次數(shù),3次賦值運算
空間復雜度即占用內(nèi)存大小,除了原本的$a和$b兩個變量,增加了$temp中間變量,所以空間復雜度為3(具體是3個字符串)
為了降低內(nèi)存使用量,避免使用中間變量的實現(xiàn)方式,使用異或運算符實現(xiàn)
解決問題的方法二:
1.方法文字描述:使用異或運算符
2.實現(xiàn)的具體代碼:<?php
//聲明兩個變量$a,$b
$a?=?$_GET['a'];
$b?=?$_GET['b'];
//打印沒有互換前,$a和$b
var_dump("未替換前:a={$a}?and?b={$b}");
//使用異或運算實現(xiàn)$a和$b互換
$a?=?$a?^?$b;
$b?=?$a?^?$b;
$a?=?$a?^?$b;
var_dump("使用異或運算符替換后:a={$a}?and?b={$b}");
?>
3.此時的時空復雜度時間,3次賦值運算,3次異或運算,6次空間,只使用原本的2個變量,$a和$b,空間復雜度為2注意:在PHP中得異或操作,前面的字符串的長度要大于等于后面的字符串,因為,比如'abc'?^?'defgh',PHP就只會執(zhí)行'abc' ^ 'def'。gh會被省略
總結(jié)
以上是生活随笔為你收集整理的交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP框架和springboot区别,S
- 下一篇: 织梦需要php什么版本,DedeCmsV