当前位置:   article > 正文

利用二分法查找有序数组中某一元素

利用二分法查找有序数组中某一元素
1.利用二分法查找有序数组中某一元素,若有,返回下标,若没有,返回-1。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. //int binary_search(int* a, int k)
  5. int binary_search(int a[], int k, int sz)
  6. {
  7. int left = 0;
  8. int right = sz - 1;
  9. while (left <= right)
  10. {
  11. int mid = right - (right - left) / 2;
  12. if (a[mid] == k)
  13. {
  14. return mid;
  15. }
  16. else if (a[mid] > k)
  17. {
  18. right = mid - 1;
  19. }
  20. else
  21. {
  22. left = mid + 1;
  23. }
  24. }
  25. return -1;
  26. }
  27. int main()
  28. {
  29. int arr[] = { 1,2,3,4,5,6,7,8,9 };
  30. int key = 6;
  31. int sz = sizeof(arr) / sizeof(arr[0]);
  32. int ret = binary_search(arr, key, sz);
  33. if (-1 == ret)
  34. printf("找不到\n");
  35. else
  36. printf("找到了:%d\n", ret);
  37. system("pause");
  38. return 0;
  39. }
2.猜数字游戏

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5. void menu()
  6. {
  7. printf("******** 1.play 0.exit ********\n");
  8. }
  9. void game()
  10. {
  11. int num = 0;
  12. int input = 0;
  13. num = rand()%100+1;
  14. //printf("%d\n", num);
  15. while (1)
  16. {
  17. printf("请猜数字:>");
  18. scanf_s("%d", &input);
  19. if (num == input)
  20. {
  21. printf("恭喜你,猜对了\n");
  22. break;
  23. }
  24. else if (input < num)
  25. {
  26. printf("猜小了\n");
  27. }
  28. else
  29. {
  30. printf("猜大了\n");
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. srand((unsigned int)time(NULL));
  37. int input = 0;
  38. do
  39. {
  40. menu();
  41. printf("请选择:>");
  42. scanf_s("%d", &input);
  43. switch (input)
  44. {
  45. case 1:
  46. game();
  47. break;
  48. case 0:
  49. printf("退出游戏\n");
  50. break;
  51. default:
  52. printf("选择错误\n");
  53. break;
  54. }
  55. }
  56. while (input);
  57. return 0;
  58. }
3.模拟三次输入密码的场景

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. int time = 3;
  7. char password1[] = "123456";
  8. char password2[10] = {0};
  9. while(time)
  10. {
  11. printf("请输入密码:>");
  12. scanf_s("%s", &password2);
  13. if (strcmp(password1, password2) == 0)
  14. {
  15. printf("登录成功\n");
  16. break;
  17. }
  18. else
  19. {
  20. ;
  21. }
  22. time--;
  23. }
  24. if (time == 0)
  25. {
  26. printf("密码已输入三次错误,退出登录\n");
  27. }
  28. system("pause");
  29. return 0;
  30. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/977573
推荐阅读
相关标签
  

闽ICP备14008679号