当前位置: 首页 > news >正文

算法(0)-时间复杂度-二分法的详解与扩展-对数器-C++版

常数操作:一个操作如果跟样本数据量无关,每次都是固定时间完成,这叫常数操作。
时间复杂度:一个算法流程中的常数操作的表达式。粗描了一个算法流程。
 

//1.数据量无关:
int t=3+5;
int p =t>>1;
//2.数组寻址  系统偏移量去拿的
int [] arr =new int[200万]

//3.链表
int p=list.get(100万+1)

1.二分法的详解与扩展
1.在一个有序数组中,找到某个数是否存在
2.在一个有序数组中,找>=某个数最左侧的位置
3.局部最小值问题

2.异或运算
1.异或运算=无进位相加
2.异或运算满足交换律和结合律(a^b=b^a )(a^b)^c=a^(b^c)
3.不用额外变量交换两个数 
   

a=a^b
b=a^b
a=a^b


4.一个数组中出现了奇数次,其他出现了偶数次,怎么找到这个数
5.一个数组中有两个数出现了奇数次,其他出现了偶数次,怎么找到这两个数
 

int right=eor&(~eor+1)  //提取出最右的1

3.对数器:测试是否正确。
 

void main()
{
   int testTime=50000;  //1.测试次数
   int maxSize=100;     //2.数组的规模不大于100
   int maxVaule=100;    //3.每个值的范围-100 100
   bool suceed =true;
   for(int i=0;i<testTime;i++)
   {
      int []arr1=generateRandomArray(maxSize,maxValue);  //1.生成随机数组
      int []arr2=copyArry(arr1);
      selectionSort(arr1);                               //2.运行  我的程序
      comparator(arr2);                                  //       系统程序
      if(!isEqual(arr1,arr2))                            //3.比对结果
        {
            succeed=false;                               //如果不一样,不失败
            printArray(arr1);
            printArray(arr2);
            break;
        }
   }
   //
   print(结果是否正确!)
   int [] arr=generateRandomArray(maxSize,maxValue);
   printArray(arr);
   selectionSort(arr);
   printArray(arr);

}


生成随机数:所有数等概率的回一个。
 


//随机数产生,等概率产生

int generatrRandomArray(int maxSize,int maxValue)
{
   //Math.random() ->[0,1) double
   //Math.random() *A ->[0,A)  ->[0,A-1] int
   //(int)(Math.random() *A) ->[0,A-1] int
   //1.长度随机 值随机
   int [] arr= new int[(int)((maxSize+1)*Math.random())];
   for(int i=0;i< arr.length;i++)
   {
      arr[i]=(int)((maxValue+1)*Math.random())-(int)(maxValue*Math.randome())
   }
   return arr;
}

int copyArray(int [] arr)
{
   if(arr==null)
   {
     return null;
   }
   int [] res= new int[arr.length];
   for(int i=0;i<arr.length;i++)
   {
       res[i]=arr[i];
   }
   return res;
}

void comparator(int[] arr)
{
    Arrays.sort(arr);
}




 

相关文章:

  • cmake阅读笔记
  • HTTP代理:内容分发战场上的「隐形指挥官」
  • Lettuce与Springboot集成使用
  • 蓝桥杯-数字诗意
  • MTK-Android12-13 屏幕永不休眠功能实现
  • 落子宜宾:全方位解析树莓集团现状布局
  • Vue3+Vite+TypeScript+Element Plus开发-06.Header响应式菜单缩展
  • AIDD-人工智能药物设计-TCMP-12个公开的中药数据库
  • window上 docker使用ros2开发并usbip共享usb设备
  • C# 中的 nameof 表达式:用法详解与最佳实践
  • Vue3 + Vite + TS,使用 Web Worker,web worker进阶 hooks
  • Qt中自定义插件和库(1)
  • 深入理解Docker Bridge网络模式:原理与实践指南
  • leetcode_203. 移除链表元素_java
  • 网络安全法规与入门指南
  • 【Android Studio】第一个Android程序 运行流程 程序调试 | 实操实战图文详细
  • net9.0 中System.Text.Json序列化和反序列化
  • spring-cloud-starter-dubbo使用说明
  • TypeScript:从类型工具到前端系统设计的跃迁
  • Python和MicroPython的解释器区别
  • 建筑招工哪个平台靠谱/开封搜索引擎优化
  • 免费版多用户商城源码/黑帽seo培训网
  • 兴化网站建设/成都网站优化
  • 扬州高端网站制作/网站搭建的流程
  • 吉安高端网站建设公司/产品推广文案怎么写
  • 用ssh做的网站/郑州网站推广公司咨询