22-算法-位运算实现的快速排序算法

  1. 排序算法用异或实现
    1. 1.什么是异或

排序算法用异或实现

1.什么是异或

  • 异或就是当两个数转换成二进制后,进行位运算,如果对应位相同就为0,不同就为1
  • 举例如下
    //1.a=1 b=2
    //2.对应的a转换成二进制位0 1; b转换成二进制为 1 0
    //3.如果将a^b的值用c二进制保存起来就是c --> 1 1
    //4.我们将c异或其中任意一个数,得到的就是与之对应的另外一个数
    //5 比如c^a  得到的是b的值,
    

//原理就是利用异或的特点:两数异或后的结果再异或其中一数,得到的是另外一个数字

//验证代码如下

var a = 1
var b= 2
console.log(“交换前的a:”+ a,”交换前的b:”+b)
//a存储的是a^b的中间值
a = a^b
//用a^b的中间值再来^ b,得到的是a,将a赋值给b
b = a^b
//b保存的是a的值,b^a,实际上是a^ 第一行的a保存的中间值,b^a————》得到b,再将b的值赋值给a
a = b^a
console.log(“交换后的a:”+ a,”交换后的b:”+b)

* 结果如下
![image.png](https://upload-images.jianshu.io/upload_images/22769532-c2bc2992b530574d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 2.下面就开始进入正题,快速排序位运算
```js
const arr = [1,2,5,7,2,3,5]
  let len = arr.length
  let i = 0
  var j = 0
  while(i < len){
    //外层循环遍历第一行
    j = i
    while(j < len){
      //内层循环遍历i后面的元素,查看是否有比当前元素小的,有的话就交换数据
      if(arr[j] < arr[i]){
        arr[i] = arr[i] ^ arr[j]
        arr[j] = arr[i] ^ arr[j]
        arr[i] = arr[j] ^ arr[i] 
      }
      j++
    }
    i++
  }
  console.log(arr.toString())
  • 通过这个题,可以提高原有选择排序的一个效率,位运算是比创建一个新的中间值来保存变量效率要更高。这里也可以回忆一下快速排序的一个实现方式


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com

文章标题:22-算法-位运算实现的快速排序算法

字数:502

本文作者:一叶知秋

发布时间:2020-07-08, 11:58:01

最后更新:2020-07-08, 12:23:31

原始链接:http://yoursite.com/2020/07/08/arithmtic/22-%E7%AE%97%E6%B3%95-%E4%BD%8D%E8%BF%90%E7%AE%97%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册 github