常见练习题

简介: 常见练习题

目录

1.二分查找

2.字符串呈现

二分查找

(前提是这个数组有序)

时间复杂度为O(logn)

我们要在一个数组里面查找一个数,如果用循环遍历的话,那么就要一个一个查找,效率很低

那么我们就介绍一个效率高的算法,二分查找,或折半查找

int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int k = 17;
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    int mid = (left + right) / 2;
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else
    {
      printf("找到了 %d", mid);
      break;
    }
  }
  if (left > right)
  {
    printf("找不到");
  }
  return 0;
}
int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int k = 17;
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    int mid = (left + right) / 2;
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else
    {
      printf("找到了 %d", mid);
      break;
    }
  }
  if (left > right)
  {
    printf("找不到");
  }
  return 0;
}

2.字符串从两边向中间汇聚

我们同时介绍一下sleep函数,于system函数


Sleep函数是Windows系统给的,在windows.h的头文件里面,可以给程序一点延迟输出,单位是毫秒,Sleep(x),x为多少毫秒


system函数,执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。另,在windows系统下参数字符串不区分大小写。


常见的有system(pause)暂停程序


system(cls)为清空屏幕


用一个str1来接收str里的字符串

#include<string.h>
#include<windows.h>//
int main()
{
  char str[] = "hello  world";
  int len = strlen(str);
  int left = 0;
  int right = strlen(str)- 1;
//可以用两个数组
  //一个放原字符串,另一个放拷贝的过程
  //#################
  char str1[] = "############";
  while (left <= right)//但是太快了,要让他慢一点
  {
    str1[left] = str[left];
    str1[right] = str[right];
    left++;
    right--;
    printf("%s", str1);
    Sleep(1000);//睡眠函数,单位是毫秒
    //system这个函数是用来执行系统命令的
    system("cls");//清理函数
    printf("\n");
  }
  return 0;
}
相关文章
|
JavaScript 前端开发
HTML VSCode 自用插件列表 (包含Vue)
HTML VSCode 自用插件列表 (包含Vue)
392 0
|
JavaScript 程序员 开发者
Notion客户端不好看?手把手教你把它变好看。
Notion客户端不好看?手把手教你把它变好看。
|
开发工具 Android开发 iOS开发
2023年APP备案操作教程 阿里云APP备案试列 APP公钥sha1签名获取方法
核心要点:A,域名之前是哪里备案的,APP备案就到哪里去做,方便简单;B,APP备案核心预存信息为APP包名、MD5指纹(安卓)、sha1签名(IOS)、公钥;这3个信息请找APP开发人员获取;一门开发的可以自行到开发者后台【配置】-【证书与包名】获取对应安卓、苹果APP信息。
|
前端开发
前端引入字体文件
文章介绍了如何在前端项目中引入字体文件,并展示了具体的HTML和CSS代码示例,包括如何使用`@font-face`规则来定义字体和在页面中应用自定义字体。
425 1
前端引入字体文件
|
7月前
|
算法 搜索推荐
快速排序-数据结构与算法
快速排序(Quick Sort)是一种基于分治法的高效排序算法。其核心思想是通过选择基准(pivot),将数组划分为左右两部分,使得左侧元素均小于基准,右侧元素均大于基准,然后递归地对左右两部分进行排序。时间复杂度平均为 O(n log n),最坏情况下为 O(n²)(如数组已有序)。空间复杂度为 O(1),属于原地排序,但稳定性不佳。 实现步骤包括编写 `partition` 核心逻辑、递归调用的 `quickSort` 和辅助函数 `swap`。优化方法有随机化基准和三数取中法,以减少最坏情况的发生。
541 13
|
JSON 网络协议 Java
cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试
cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试
561 0
|
前端开发
基于jeecgboot的flowable流程任务excel导出功能
基于jeecgboot的flowable流程任务excel导出功能
266 1
|
人工智能 监控 算法
未来技术趋势:人工智能与物联网的融合
【8月更文挑战第15天】本文深入探讨了人工智能(AI)与物联网(IoT)的结合如何引领技术革新,重塑行业格局。通过分析AI和IoT各自的发展趋势及其交汇点,我们揭示了这一融合对智能家居、工业自动化、健康医疗等领域带来的变革。文章还讨论了在追求这些先进技术时可能遇到的挑战和道德问题,为读者提供了一幅未来技术发展的蓝图。
|
数据库 流计算
Flink CDC的工作原理是通过监听数据库的变更事件
Flink CDC的工作原理是通过监听数据库的变更事件
373 1
|
前端开发 IDE Java
使用aop实现全局异常处理
使用aop实现全局异常处理
332 0