c++:一维数组的冒泡与二分查找分解

各位好,今天我们来介绍一下一维数组的冒泡排序与二分查找。

冒泡排序

首先,我们通过for语句来输入数据到我们确定好的数组中。

    int i,a[10];
    for (i=0;i<10;i++)
    {
        cin >> a[i];
    }

接下来通过双重循环对该数组进行冒泡排序。

    int t=0,j;
    //外循环控制总循环次数,确保循环结束后全部按顺序排出
    for (i=1;i<10;i++)
    {
        //内循环通过if语句判断相邻两数字的值并修正顺序
        for (j=i-1;j>=0;j--)
        {
            //这里的小于号可以确保数组元素逐渐变大
            if (a[j+1]<a[j])
            {
                //变量t可暂时储存数组元素的值
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
            else 
                break;
        }
    }

第一步已经完成了,接下来我们使用二分查找法找输入的数字。

二分查找

    int num;
    cout << "请输入要二分查找的数字";
    cout << endl;
    cin >> num;
    //分别定义最低数字与最高数字的数组下标
    //up表示前,down表示后
    int up=0;
    int down=9;
    int mid=(up+down)/2;
    //若前边的数字小于后边的数字以及中值与找的数字不等时
    while (up<down && a[mid]!=num)
    {
        //如果中值大于找的值
        if (a[mid]>num)
            down=mid-1;
        //如果中值小于找的值
        if (a[mid]<num)
            up=mid+1;
        //将中值变得与找的值更近
        mid=(up+down)/2;
    }
    //当中值与找的数字相等时,循环结束
    if (a[mid]=num)
    {
        cout << "该数字在第";
        cout << mid+1;
        cout << "位置";
    }
    else
    {
        cout << "找不到该数字!";
    } 

接下来将两部分拼接起来并补充一下细节即可。

#include<iostream>
#define N 10
using namespace std;
int main()
{
    int a[N];
    cout << "输入待排序的十个数字:";
    cout << endl;
    int i;
    for (i=0;i<N;i++)
    {
        cin >> a[i];
    }
    int t=0,j;
   for (i=1;i<N;i++)
    {
        for (j=i-1;j>=0;j--)
        {
            if (a[j+1]<a[j])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
            else 
                break;
        }
    }
    cout << "排序后的数组是:";
    for (i=0;i<N;i++)
    {
        cout << a[i];
        cout << " ";
    }
    cout << endl;
    int num;
    cout << "请输入要二分查找的数字";
    cout << endl;
    cin >> num;
    int up=0;
    int down=N-1;
    int mid=(up+down)/2;
    while (up<down && a[mid]!=num)
    {
        if (a[mid]>num)
            down=mid-1;
        if (a[mid]<num)
            up=mid+1;
        mid=(up+down)/2;
    }
    if (a[mid]=num)
    {
        cout << "该数字在第";
        cout << mid+1;
        cout << "位置";
    }
    else
    {
        cout << "找不到该数字!";
    } 
    return 0;
}

有关一维数组的冒泡排序与二分查找就介绍到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌云陌丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值