《算法很美》听课笔记

b站算法很美视频听课笔记

First day

所用语言:java 6,7,8均可;

开发工具:intelliJ Idea

第一周 位运算 查找和排序 数组

好程序员是练出来的,不是听课听出来的!

推荐阅读书籍:《程序员面试经典cc150》《挑战程序设计竞赛》《程序员代码面试指南》

实践实践再实践

位运算基础课

1,位运算

*1,位运算与进制基础
*2,&(与) |(或) ^(异或) ~(非/取反) 【 <<(左移) >>(右移)——>将二进制位进行左右移位运算】
*3,>>>运算符将用0填充高位,>>运算符是用符号位填充高位,没有<<<运算符
*4,对于int型,1<<35和1<<3是相同的,而左边的操作数是long型时需对右侧操作数作数模64
*5,与:都为1,结果为1;或:有一个为1结果为1;异或:二者不同是结果为1;

1判断奇偶性

即将一个数与1进行位运算,若结果为1,则为奇数,结果为0,则为偶数(因为当未知数为奇数时,他的二进制数末尾数一定为1,当为偶数时,他的末尾一定是0)

2获取二进制位是1还是0

3交换两个整数变量的值

4不用判断语句,求整数的绝对值

位运算符
在这里插入图片描述

实例:

实例题目

答案分析:

一到一千,消掉相同的(不同的)数字,利用异或;将数字连续的异或起来,消除重复!
但是重复的消除了怎么表示?
可以将一到一千排起来。

import java.util.Random;

import javax.rmi.CORBA.Util;


        public class dome1 {

            /**
             * @param args
             */
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                int N = 11;
                int[] arr = new int[N];
                for (int i = 0; i < arr.length-1; i++) {
                    arr[i] = i + 1;
                }
                arr[arr.length-1] = new Random().nextInt(N-1)+1;
                int index = new Random().nextInt(N);
                Util.swap(arr,index,arr.length-1);
                Util.print(arr[index]);
                int x1 = 0;
                for (int i = 0; i < N-1; i++){
                    x1 = (x1^(i+1));
                }
                for (int i = 0; i <N; i++){
                    System.out.println(x1);
                }
            }

        }
代码如上,没运行出来!

实例

在这里插入图片描述
浮点数变二进制,成2,判断整数位,是否为零,若为零,则写零,若不是,则写一,扣掉整数部分,
在这里插入图片描述
##在这里插入图片描述

两个相同的二进制数做不进位加法结果为0

十个相同的十进制数做不进位加法结果为0

k个相同的k进制数做不进位加法结果为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoSuchManException

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值