摘要:假設(shè)需要交換的兩個(gè)數(shù)為使用中間變量使用一個(gè)中間變量來(lái)做媒介來(lái)交換,設(shè)中間變量為則通過(guò)完成了交換,代碼如下不使用中間變量初看起來(lái)可能比較迷糊,下面分析一下,假設(shè)內(nèi)存結(jié)構(gòu)如下
假設(shè)需要交換的兩個(gè)數(shù)為 a, b
使用中間變量------------- | a | b | t | -------------
使用一個(gè)中間變量來(lái)做媒介來(lái)交換,設(shè)中間變量為t;則通過(guò) a -> t; b -> a; t -> b 完成了交換,代碼如下
var t = a; a = b; b = t;不使用中間變量
a = a + b; b = a - b; a = a - b;
初看起來(lái)可能比較迷糊,下面分析一下,假設(shè)內(nèi)存結(jié)構(gòu)如下
a1 a2 --------- | a | b | ---------
先把兩個(gè)的和保存進(jìn)a所在的位置 a + b -> a1,狀態(tài)改變?nèi)缦?/p>
a1 a2 ------------- | a + b | b | -------------
現(xiàn)在a1位置已經(jīng)為a+b了,減去一個(gè)b便變成了a,然后放在a2位置,現(xiàn)在狀態(tài)如下
a1 a2 ------------- | a + b | a | -------------
最后用a1所在位置的數(shù)減去a2所在位置的數(shù)也即 a + b - a = b,放進(jìn)a1,完成交換
a1 a2 --------- | b | a | ---------
其實(shí)就是把兩數(shù)先累加放在其中一個(gè)位置,再用這個(gè)位置的數(shù)減去兩次另一個(gè)位置的數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/90446.html
摘要:二選擇排序原理在一列數(shù)字中,選出最小數(shù)與第一個(gè)位置的數(shù)交換。至此確定了前兩個(gè)位置上的數(shù)。示例代碼選擇排序?qū)崿F(xiàn)思路雙重循環(huán)完成,外層控制輪數(shù),當(dāng)前的最小值。 二、選擇排序 原理: 在一列數(shù)字中,選出最小數(shù)與第一個(gè)位置的數(shù)交換。然后在剩下的數(shù)當(dāng)中再找最小的與第二個(gè)位置的數(shù)交換,如此循環(huán)到倒數(shù)第二個(gè)數(shù)和最后一個(gè)數(shù)比較為止。(以下都是升序排列,即從小到大排列) 舉例說(shuō)明: $arr =...
摘要:選擇排序就這么簡(jiǎn)單從上一篇已經(jīng)講解了冒泡排序了,本章主要講解的是選擇排序,希望大家看完能夠理解并手寫出選擇排序的代碼,然后就通過(guò)面試了如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 選擇排序就這么簡(jiǎn)單 從上一篇已經(jīng)講解了冒泡排序了,本章主要講解的是選擇排序,希望大家看完能夠理解并手寫出選擇排序的代碼,然后就通過(guò)面試了!如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 選擇排序介紹和穩(wěn)定性說(shuō)明...
摘要:前面介紹了七大算法的思想與實(shí)現(xiàn)步驟,下面來(lái)做一個(gè)歸總。直到無(wú)序區(qū)中的數(shù)為零,結(jié)束排序。步驟以從小到大為例,排序數(shù)組大小為。比較完以后則排序結(jié)束。堆排序思想堆排序是采用樹的形式的數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行排序的,其中每一個(gè)堆都是完全二叉樹。 前面介紹了七大算法的思想與實(shí)現(xiàn)步驟,下面來(lái)做一個(gè)歸總。 排序方法 平均復(fù)雜度 最壞復(fù)雜度 最好復(fù)雜度 輔助空間 穩(wěn)定性 直接選擇排序 O(n^2...
摘要:今天,一條就帶大家徹底跨過(guò)排序算法這道坎,保姆級(jí)教程建議收藏。利用遞歸算法,對(duì)分治后的子數(shù)組進(jìn)行排序。基本思想堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)而設(shè)計(jì)的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時(shí)間復(fù)雜度均為,它也是不穩(wěn)定排序。 ...
摘要:本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了的代碼實(shí)現(xiàn)。平均時(shí)間復(fù)雜度不好分析,它是冒泡排序是穩(wěn)定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復(fù)雜度是的排序算法。歸并排序,會(huì)將數(shù)組從中間分成左右兩部分。 本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了 javascript 的代碼實(shí)現(xiàn)。因?yàn)楸疚陌舜罅康呐判蛩惴ǎ苑治霾粫?huì)非常詳細(xì),適合有對(duì)排序算法有一定了解的同學(xué)。本文內(nèi)容其實(shí)不...
閱讀 2284·2019-08-30 10:51
閱讀 842·2019-08-30 10:50
閱讀 1555·2019-08-30 10:49
閱讀 3214·2019-08-26 13:55
閱讀 1661·2019-08-26 11:39
閱讀 3469·2019-08-26 11:34
閱讀 2019·2019-08-23 18:30
閱讀 3437·2019-08-23 18:22