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

插入排序,二分查找,字符数组 day8

三:插入排序(原地插入排序)O(N^2)

找到位置,用此位置的值与其前面位置的值比较,直到找到合适的位置

	for(i=0;i<len;i++) //要插入的数据{t = a[i];//非原地插入排序可不用t记录位置的值j = i; while(j>0 && a[j-1] > t)//寻找合适的插入位置{a[j] = a[j-1];j--;}a[j] = t;}

四:二分查找

	int n;scanf("%d",&n);int begin = a[0];int end = a[len-1];while(begin <= end){int mid = (begin + end)/2;if(a[mid] > n){end = mid - 1;}else if(a[mid] < n){begin = mid + 1;}else{break;}}int mid = (begin + end)/2;if(begin <= end){printf("found,located in a[%d]\n",mid);}else{printf("not found\n");}

八:字符型的一维数组

一:

主要用途:存放字符串数据 结束标志 // ‘\0’

​ 字符串都是按照字符数组的方式存储 //“hello”---->0 1 2 3 4 5,占六个内存空间,剩下部分补零

	char s[10] = "hello";int i = 0;while(s[i] != 0){printf("%c",s[i]);++i;}putchar('\n');

二:数组大小识别

​ 字符串中 ‘\0’ 也是占空间

	char s1[] = {'h','e','l','l','o'};char s2[10] = "hello";char s3[] = "hello";printf("sizeof(s1) = %ld\n",sizeof(s1));printf("sizeof(s2) = %ld\n",sizeof(s2));printf("sizeof(s3) = %ld\n",sizeof(s3));
结果:sizeof(s1) = 5sizeof(s2) = 10sizeof(s3) = 6

三:字符串操作函数gets/puts

scanf("%s",s); gets/puts

char *gets(char *s); 参数:s代表存放字符串的一块空间的地址 返回值:s

	char s[20] ={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};gets(s);//可能导致缓冲区溢出,使栈int i = 0;while(s[i] !='\0'){printf("%c",s[i]);++i;}putchar('\n');

int puts(const char *s); 参数:s 要输出的字符 返回值:成功返回非负 失败返回-1

​ 输出自带换行

	gets(s);puts(s);

四:strlen //计算字符串长度

字符串长度:‘\0’ 前面字符的个数(不包括\0)

	char s[20];scanf("%s",s);int i = 0;int count = 0;while(s[i] != '\0'){count++;i++;}printf("long = %d\n",count);

size_t strlen(const char *s); //参数:s要统计的字符串 返回值:返回字符串的长度值

#include<stdio.h>
#include<string.h>int main(int argc, const char *argv[])
{char s[20];gets(s);printf("long = %ld\n",strlen(s));return 0;
}

五:strcpy字符串复制

	char s1[] = "hello";char s2[20];int i = 0;while(s1[i] != '\0'){s2[i] = s1[i];i++;}s2[i] = '\0';//保证复制后的字符串有效puts(s1);puts(s2);

char *strcpy(char *dest, const char *src);

​ //参数 @src 要复制的字符 @dest要复制到的目标 返回值:成功返回dest 失败返回NULL

#include<stdio.h>
#include<string.h>int main(int argc, const char *argv[])
{char s1[] = "hello";char s2[20];strcpy(s2,s1);puts(s1);puts(s2);return 0;
}

六:

相关文章:

  • 如何配置Git LFS?
  • [蓝桥杯]倍数问题
  • ZooKeeper 安装教程(Windows + Linux 双平台)
  • 26考研 | 王道 | 计算机组成原理 | 三、存储系统
  • [蓝桥杯]堆的计数
  • 2023年全国研究生数学建模竞赛华为杯A题WLAN网络信道接入机制建模求解全过程文档及程序
  • function call到MCP技术演进
  • 44、web实验-后台管理系统基本功能
  • 使用 minicom 录制串口报文并回放
  • 黑马Java面试笔记之 并发编程篇(线程池+使用场景)
  • c++算法学习4——广度搜索bfs
  • 如何做好一份技术文档?(上篇)
  • Java 实现下拉框树状结构接口的核心思路
  • 设计模式(代理设计模式)
  • openGauss数据库备份与恢复实践
  • Python中的self参数介绍
  • Cilium动手实验室: 精通之旅---6.Cilium IPv6 Networking and Observability - Lab
  • ROS2里面与话题 /move_base_simple/goal 和 /move_base/status 相对应的话题名字及其含义
  • 基于SSM框架的医院电子病历管理系统,分为用户网页和管理后台,包括科室模块、医生模块、预约挂号模块、就诊记录模块、就诊评价模块、轮播图模块和系统基础模块
  • 【PhysUnits】15.15 变量类型(variable.rs)
  • 国内真正的永久建站/怎么制作公司网页
  • 汕头哪里学网站建设最好/网站推广关键词排名优化
  • 浏阳做网站/合肥网站排名提升
  • 怎么做淘宝代购网站/石家庄疫情最新消息
  • 上海网站开发哪里好薇/上海疫情突然消失的原因
  • 做自适应网站对设计稿的要求/网站开发教程