个人练习,主要是冒泡和二分查找的逻辑。比较简单,就不多写说明了
#include<stdio.h>/////冒泡排序二分查找结合!
#include<Windows.h>
#include<math.h>
#include<string.h>
#include<time.h>
#pragma warning(disable:4996)
#define A 30
void FunMade(int *a, int num)
{
for (int b = 0; b < num; b++)
{
a[b] = rand() % 100 + 1;
}
}
void ShowFun(int *a,int num)
{
for (int c = 0; c < num; c++)
{
printf("a[%d]=%d \t", c, a[c]);
if ((c%5+1)==5)
{
printf("\n");
}
}
}
void Bubb(int *a, int num)
{
for (int x = 0; x < num - 1; x++)
{
for (int y = 0; y < num - 1 - x; y++)
{
if (a[y] >= a[y + 1])
{
a[y] = a[y] ^ a[y + 1];
a[y + 1] = a[y] ^ a[y + 1];
a[y] = a[y] ^ a[y + 1];
}
}
}
}
void Dichotomy(int *a,int num)
{
printf("what is the number do you want to find!\n\
please enter it!!!\n");
int b = 0;
scanf("%d", &b);
int left = 0, right = num-1;
int mid = 0;
int c = 0;
while (left <= right)
{
mid = (left + right) / 2;
if (a[mid] > b)
{
right = mid - 1;
}
else if (a[mid] < b)
{
left = mid + 1;
}
else if (a[mid] = b)
{
printf("find it! a[%d]=%d ", mid, a[mid]);
c = 1;
break;
}
}
if (c == 0)
{
printf("this number is not in the array!!");
}
}
void main()
{
system("color 01");
srand((unsigned long)time(NULL));
int a[A] = { 0 };
int num = 0;
num=sizeof(a) / sizeof(a[0]);
FunMade(a,num);//数组随机赋值
ShowFun(a,num);
printf("\n=====================================\n");
Bubb(a, num);//冒泡排序
ShowFun(a, num);
printf("\n=====================================\n");
Dichotomy(a,num);//二分查找
system("pause");
}