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

