常见练习题

目录

1.二分查找

2.字符串呈现


​​​​​​​

二分查找

(前提是这个数组有序)

时间复杂度为O(logn)

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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里的字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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;
}

常见练习题
http://example.com/2021/11/08/常见练习题/
作者
Zevin
发布于
2021年11月8日
许可协议