首页 > 其他分享 >day01

day01

时间:2022-10-11 10:00:13浏览次数:55  
标签:right day01 交换 mid 冒泡 有序 left

二分查找

手写代码

注意事项

索引溢出

如果right是最大整数值,而left又赋值为mid+1,则会溢出变成负数,不过这种情况毕竟是少数

解决方案
mid=left+(right-left)/2;

自己推

(left+right)>>>1;

无符号右移可以将1拉回来

选择题

查找次数确定

看mid指针指过多少个数

上限

log2n=log10n/log10 2

小数向上取整

注意事项

结论适用条件为jdk中的Arrays.binarySerch的实现方式

排序

冒泡排序

改进

  • 最多比较n-1轮,如果i的初值为n-1(即此时全都无序),每轮最多比较i-1次
  • 如果比较过程中,没有任何交换,说明已经完全有序,可直接退出循环
  • 可以记录最后一次交换的索引,根据其确定下一轮的比较次数,即比较元素中位于左边的,j和j+1那么下一轮就是j

选择排序

改进

  • 记录最小元素的索引,最后交换到目标位置,不要每次发现比之小的都交换

插入排序

算法思想

将无序区的元素逐渐插入有序区,逐渐扩大有序区至全部

改进

插入时,从后往前比,满足条件交换,不满足条件原地插入,原理在于有序。

冒泡VS选择

  • 时间复杂度均为O(N^2)
  • 一般选择快于冒泡,交换次数少
  • 有序度高的情况下,优化后的冒泡快于选择,这导致了冒泡的一个适用场景
  • 冒泡稳定,不会交换相同元素的次序,因为比较过程中前后相同不交换
  • 选择不稳定,可能会交换相同元素的次序,因为等于也会交换的缘故?

标签:right,day01,交换,mid,冒泡,有序,left
From: https://www.cnblogs.com/zhouj-learn/p/16778253.html

相关文章

  • ERP项目笔记-Day01
    技术选型: 采用前后端开发,不再像以前那样跳来跳去了。更加注重用户体验。 数据库的创建和准备:关于数据库是很大的一块内容,需要根据实际需求去设计表。如果是在公司,会有人设......
  • day01 spring xml开发
    spring开发首先需要导入相对于坐标<dependencies><!--导入spring的坐标spring-context,对应版本是5.2.10.RELEASE--><dependency><groupId>org.springfr......
  • day01
    markdown学习标题三级标题四级标题字体hello,world!hello,world!hello,world!hello,world!引用选择狂神说java,走向人生巅峰分割线图片超链接狂神说java......
  • 《剑指offer》day01
    用两个栈实现队列题目要求思路栈的特性是先进后出,而队列的特性是先进先出,用栈实现队列的话就需要一个辅助栈来逆置原来的栈序列。代码classCQueue{Stack<I......
  • day01
    markdown学习标题一级标题(#空格标题名字)二级标题(##空格标题名字)三级以下类推逐加#回车即可字体斜体:字体俩边加1星号(eg:hello)粗体:字体俩边加2星号(eg:hello)即粗又斜:......
  • Three.js day01
    `<head><metacharset="UTF-8"><title>第一个three.js文件_WebGL三维场景</title><style>body{margin:0;overflow:hidden;/*隐......
  • c++learningDay01
    c++大学习头文件#include"complex.h"头文件的格式:防卫声明#ifndef__COMPLEX__#define__COMPLEX__​...​#endif  头文件由三个大部分构成#ifndef__COMPL......
  • day01-数据库的安装和使用
    Java数据库的安装和使用1.数据库的作用一个问题:淘宝网、京东、微信抖音,都有各自的功能,那么我们退出系统的时候,为什么信息还在?解决之道-文件,数据库为了解决上诉问题,使用......
  • JavaWeb基础day01_XML
    一、XMLXML文件的默认打开方式是浏览器xml:是可扩展的标记语言ExtensibleMarkupLanguage。以一种标签语言与HTML类似1、xml的作用编写配置文件:C3P0编写XML配置文件做数据......
  • Java_day01
    Java的特性和优势-简单性-面向对象-可移植性-高性能-分布式-动态性-多线程-安全性-健壮性Java成功的原因个人认为在于语言本身的优势之外还有个人电脑的普及......