冒泡排序和二分查找

面试常用算法,

冒泡很可能要考的

#include "stdafx.h"
#include <stdio.h>
#include "string"
void fun_swap(int &a, int &b);
bool fun_array(int *p, int i32Size);
int  Binary_Search(int *a, int n, int key);
int _tmain(int argc, _TCHAR* argv[])
{
	//冒泡排序
	int a[5] = {3,2,1,5,4};
	fun_array(a, 5);

	int b[11] = {0,1,2,3,4,5,6,7,8,9,10};
	int aa = Binary_Search(b,11,8);
	//二分查找法
	return 0;
}

//冒泡排序
bool fun_array(int *p, int i32Size)
{
	for (int i=0; i<i32Size; i++)
	{
		for (int j=i+1; j<i32Size; j++)
		{
			if (*(p+i)>*(p+j))
			{
				fun_swap(*(p+i), *(p+j));
			}
		}
	}
	return true;
}
//交换
void fun_swap(int &a, int &b)
{
	int c;
	c = a;
	a = b;
	b = c;
}

//二分查找
int Binary_Search(int *a, int n, int key)
{
	int low, high, mid;
	low = 1; //定义最低下表为记录首位
	high = n; //定义最高下标为记录末位
	while (low<=high)
	{
		mid = (low+high)/2;	//折半
		if (key<a[mid])		//若查找值比中值小
		{
			high = mid -1;	//最高下标调整到中位下标小移位
		} 
		else if(key>a[mid])  //若查找值比中值大
		{
			low = mid + 1;	//最低下标调整到中位下标大一位
		}
		else
		{
			return mid;		
		}
	}

	return 0;
}
先记录一下

猜你喜欢

转载自blog.csdn.net/q357010621/article/details/80027594
今日推荐