综合前面的语法,进行下面的一个实例学习。
目录
1. 折半查找算法。
首先来学习一个算法。
折半查找又称二分查找。执行二分查找的前提,必须是要查找的数据都是有序的。比如数组必须是有序的数组,要么递增要么递减。
假设数组是递增的,查找它的大概流程是,从最中间数据开始查找,然后与输入数据比较,如果数据大于中间数据,则去右边查找,反之去左边查找,又从中间查找。如果到最后一个数没找到就退出。
//C语言
int half_find(int arr[], int size,int findx)
{
int left = 0;
int right = size - 1;
int mid = left + (right - left) / 2;
while(left <= right)
{
if(findx > arr[mid])
{
left = mid + 1;
mid = left + (right - left) / 2;
}
else if(findx > arr[mid])
{
right = mid - 1;
mid = left + (right - left) / 2;
}
else
{
return mid;
}
}
return -1;
}
2. 折半查找总结
- 定义左右数组下标——left,right。
- 定义中间下标——mid。
- 定义条件——while(left<=right)
- 比较寻找的数字与中间量的大小。改变左右下标的位置。
3. 猜数字游戏
//c语言
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
void game() {
int x = 0;
x = rand() % 100;
int choice = 0;
printf("请输入一个0~99的数字:");
scanf_s("%d", &choice);
while (1) {
if (choice < x) {
printf("您的数字小了!请再输一次:");
scanf_s("%d", &choice);
}
if (choice > x) {
printf("您的数字大了!请再输一次:");
scanf_s("%d", &choice);
}
if (choice == x) {
printf("恭喜您!真幸运!\n");
break;
}
}
}
void menu() {
printf("*************************\n");
Sleep(900);
printf("******+1.开始游戏+******\n");
Sleep(900);
printf("******+0.退出游戏+******\n");
Sleep(900);
printf("*************************\n");
Sleep(900);
int choice;
while (1) {
printf("请输入您的选择:");
scanf_s("%d", &choice);
if (choice == 1) {
printf("游戏要开始了,请准备!\n");
printf("\n");
Sleep(1000);
game();
}
else if (choice == 0) {
printf("下次再来。。\n");
break;
}
else {
printf("非法输入。\n");
}
}
}
void main() {
menu();
system("pause");
}