冒泡排序,并二分查找

个人练习,主要是冒泡和二分查找的逻辑。比较简单,就不多写说明了

#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");
	
}
发布了13 篇原创文章 · 获赞 13 · 访问量 754

猜你喜欢

转载自blog.csdn.net/jiewaikexue/article/details/102845401