冒泡排序,並二分查找

個人練習,主要是冒泡和二分查找的邏輯。比較簡單,就不多寫說明了

#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");
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章