面试常用冒泡排序和二分查找

面试常用的两个算法题

希望对大家有帮助

#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/80036646
今日推荐