MFC学习记录--冒泡排序与二分查找法

本文记录了使用MFC进行编程时,实现冒泡排序和二分查找法的过程。冒泡排序通过多次比较将数组元素按升序排列,而二分查找法在已排序的数组中快速定位目标数值的位置。源代码中生成随机数组,应用冒泡排序进行排序,然后使用二分查找法查找用户输入的整数在数组中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冒泡排序:每一次循环,将数组a[n]中每两个元素看成一组,比较其大小,小的放在前面,大的在后面,第一次比较,数组中最大的元素被移到数组最后一位,第二次只需比较前面n-1位即可,依次循环下去。

二分查找法:一组有序的数组a[n],需要查找数值为num的值在数组中的位置,将数组从中间分为两部分,每次将num与数组中间的元素值进行比较,若小于该中间值,将左边数组看成一个新的数组,继续比较,若大于该中间值,则将右边数组看成一个新的数组,相等则返回该中间值,循环结束。

以下是实现的源代码:

#include "stdafx.h"
#include "iostream"
#include "math.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

int a[100];
int i,j,k;
int flag;
//计算整型数组的元素个数
j=sizeof(a)/sizeof(int);
//生成随机数
for (i=0;i<j;i++)
{
a[i]=int(rand()%1000);
}
//冒泡排序
for (i=0;i<j-1;i++)
{
for (k=0;k<j-i-1;k++)
{
if (a[k]>a[k+1])
{
flag = a[k];
a[k] = a[k+1];
a[k+1] = flag;
}
}

}
//打印出有序的数组a
for (i=0;i<j;i++)
{
cout<<a[i]<<endl;
}


//二分查找法,查找n在a数组中的位置下标
int n;
cout<<"Please input a integer n:"<<endl;
cin>>n;
int s = 1;
int left = 0;
int right = j-1;


while(s)
{
int middle = (left + right)/2;
if (n == a[middle])
{
//s为循环结束判断符
s = 0;
cout<<middle;
}
else if (n<a[middle])
{
right = middle-1;
}
else
{
left = middle + 1;
}
}


system("pause");
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值