摘要:假设需要交换的两个数为使用中间变量使用一个中间变量来做媒介来交换,设中间变量为则通过完成了交换,代码如下不使用中间变量初看起来可能比较迷糊,下面分析一下,假设内存结构如下
假设需要交换的两个数为 a, b
使用中间变量------------- | a | b | t | -------------
使用一个中间变量来做媒介来交换,设中间变量为t;则通过 a -> t; b -> a; t -> b 完成了交换,代码如下
var t = a; a = b; b = t;不使用中间变量
a = a + b; b = a - b; a = a - b;
初看起来可能比较迷糊,下面分析一下,假设内存结构如下
a1 a2 --------- | a | b | ---------
先把两个的和保存进a所在的位置 a + b -> a1,状态改变如下
a1 a2 ------------- | a + b | b | -------------
现在a1位置已经为a+b了,减去一个b便变成了a,然后放在a2位置,现在状态如下
a1 a2 ------------- | a + b | a | -------------
最后用a1所在位置的数减去a2所在位置的数也即 a + b - a = b,放进a1,完成交换
a1 a2 --------- | b | a | ---------
其实就是把两数先累加放在其中一个位置,再用这个位置的数减去两次另一个位置的数
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/90446.html
摘要:二选择排序原理在一列数字中,选出最小数与第一个位置的数交换。至此确定了前两个位置上的数。示例代码选择排序实现思路双重循环完成,外层控制轮数,当前的最小值。 二、选择排序 原理: 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(以下都是升序排列,即从小到大排列) 举例说明: $arr =...
摘要:选择排序就这么简单从上一篇已经讲解了冒泡排序了,本章主要讲解的是选择排序,希望大家看完能够理解并手写出选择排序的代码,然后就通过面试了如果我写得有错误的地方也请大家在评论下指出。 选择排序就这么简单 从上一篇已经讲解了冒泡排序了,本章主要讲解的是选择排序,希望大家看完能够理解并手写出选择排序的代码,然后就通过面试了!如果我写得有错误的地方也请大家在评论下指出。 选择排序介绍和稳定性说明...
摘要:前面介绍了七大算法的思想与实现步骤,下面来做一个归总。直到无序区中的数为零,结束排序。步骤以从小到大为例,排序数组大小为。比较完以后则排序结束。堆排序思想堆排序是采用树的形式的数据结构来进行排序的,其中每一个堆都是完全二叉树。 前面介绍了七大算法的思想与实现步骤,下面来做一个归总。 排序方法 平均复杂度 最坏复杂度 最好复杂度 辅助空间 稳定性 直接选择排序 O(n^2...
摘要:今天,一条就带大家彻底跨过排序算法这道坎,保姆级教程建议收藏。利用递归算法,对分治后的子数组进行排序。基本思想堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为,它也是不稳定排序。 ...
摘要:本文对一些排序算法进行了简单分析,并给出了的代码实现。平均时间复杂度不好分析,它是冒泡排序是稳定的排序算法。冒泡排序是原地排序算法原地排序指的是空间复杂度是的排序算法。归并排序,会将数组从中间分成左右两部分。 本文对一些排序算法进行了简单分析,并给出了 javascript 的代码实现。因为本文包含了大量的排序算法,所以分析不会非常详细,适合有对排序算法有一定了解的同学。本文内容其实不...
阅读 2228·2019-08-30 10:51
阅读 785·2019-08-30 10:50
阅读 1462·2019-08-30 10:49
阅读 3129·2019-08-26 13:55
阅读 1590·2019-08-26 11:39
阅读 3412·2019-08-26 11:34
阅读 1936·2019-08-23 18:30
阅读 3380·2019-08-23 18:22