目录
二分查找
(前提是这个数组有序)
时间复杂度为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;
}