目录
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("cls"); printf("\n"); } return 0; }
|