C语言综合运用三(大一上)

1.实现折半查找

分析:折半查找也称折半搜索、二分搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

算法步骤描述:

 ①首先确定整个查找区间的中间位置 mid = (left + right)/2 。

② 用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功;若大于,则在后(右)半个区域继续进行折半查找;若小于,则在前(左)半个区域继续进行折半查找。

③ 对确定的缩小区域再按折半公式,重复上述步骤。最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。

程序:

#include <stdio.h>
int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int k;
	int left = 0;
	int right =9;
	printf("输入要查找的数");
	scanf("%d",&k);
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > k)
		{
		    right = mid - 1;// 如果目标值小于数组中间元素,则将右边界设为中间位置前一个位置
		}
		else if (arr[mid] < k)
		{
		    left = mid + 1;// 如果目标值大于数组中间元素,则将左边界设为中间位置后一个位置
		}
		else
		{
            printf("找到了:%d\n", mid);// 如果目标值等于数组中间元素,则返回该位置索引
		    break;
		}
	}
		if (left > right)
		{
            printf("找不到了\n"); // 若未找到目标值,则输出不存在
		}
    return 0;
}

2.排序两个一维数组;合并到一个一维数组中,仍然保持有序。

分析:你需要将两个已排序的一维数组合并成一个有序的一维数组,可以通过交换元素的方式实现。

下面的程序首先输入两个数组的长度,然后分别输入数组a和b的元素。接下来,对数组a和b进行冒泡排序,最后将两个排序后的数组按照元素大小进行合并,存储在数组c中。

注意:本题要求在合并时先对两个已排序的一维数组中的元素进行排序,再把排好的元素放入新的一维数组中。

程序:(程序写的有些太长了,可以把一些没啥用处的步骤删除,可以通过调用函数来简化)

简化(排序函数):

#include<stdio.h>

void sort(int a[],int n)

{

  int i,k,temp;

  for(i=0;i<n-1;i++)

    for(k=0;k<n-i-1;k++)

      if (a[k]>a[k+1])

      { 

        temp = a[k];

        a[k] = a[k+1];

        a[k+1] = temp;

      }

}

#include<stdio.h>
int main()
{
    int i,j,m,n,t,temp;
    scanf("%d%d",&m,&n);
    int a[m],b[n],c[m+n];
    printf("输入一维数组a[m]:\n");
    for(i=0;i<m;i++)
    {
	    scanf("%d",&a[i]);
    }
	    printf("a[m]排序前:");
	    for(i = 0;i <m;i++)
	    {
	        printf("%d ",a[i]);
	    }
	    printf("\n");
	    for(i = 0;i<m;i++)
	    {
	        for(j = i + 1;j <m;j++)
	        {
	            if(a[i] > a[j])
	            {
	                temp = a[i];
	                a[i] = a[j];
	                a[j] = temp;
	            }
	        }
	    }
	    printf("a[m]排序后:");
	    for(i = 0;i<m;i++)
	    {
	        printf("%d ",a[i]);
	    }
	    printf("\n");
    printf("输入一维数组b[n]:\n");
    for(i=0;i<n;i++)
    {
	    scanf("%d",&b[i]);
    }
    printf("b[n]排序前:");
    for(i = 0;i <n;i++)
    {
        printf("%d ",b[i]);
    }
    printf("\n");
    for(i = 0;i <n;i++)
    {
        for(j = i + 1;j <n;j++)
        {
            if(b[i] > b[j])
            {
                temp = b[i];
                b[i] = b[j];
                b[j] = temp;
            }
        }
    }
	    printf("b[n]排序后:");
	    for(i = 0;i < n;i++)
	    {
	        printf("%d ",b[i]);
	    }
	    printf("\n");
	    for(i=0,j=0,t=0;i<m&&j<n;)
	    {
	        if(a[i] < b[j])
	        {
	            c[t++] = a[i++];
	        }
	        else
	        {
	            c[t++] = b[j++];
	        }
	    }
	    while(i < m)
	    {
	        c[t++] = a[i++];
	    }
	    while(j < n)
	    {
	        c[t++] = b[j++];
	    }
    for(i=0;i<t;i++)
    {
	    printf("%d ",c[i]);
    }
    return 0;
}

输出:

3.把一维数组中的数值按照奇偶性拆分成两个一维数组

分析:

该代码首先创建了一个包含10个元素的一维数组,然后使用for循环遍历数组。根据元素奇偶性,将它们分别存储到b数组和c数组中。最后使用printf语句输出两个数组中的元素。

程序:

#include<stdio.h>
int main()
{
	int a[10];
	int b[10],c[10];
	int i,j,k;
	printf("请输入10个数赋给数组a[10]\n");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("\n");
	for(i=0,j=0,k=0;i<10;i++)
	{
		if(a[i]%2==0)
		{
			b[j]=a[i];
		    j++;
		}
		else
		{
			c[k]=a[i];
		    k++;
		}   
	}
	printf("其中偶数数组b[]为:");
	for(i=0;i<j;i++)
	{
		printf("%d  ",b[i]);
	}
	printf("\n");
	printf("其中奇数数组c[]为:");
	for(i=0;i<k;i++)
	{
		printf("%d  ",c[i]);
	}
	return 0;
}

内容概要:本文档详细介绍了在台CentOS 7服务器(IP地址分别为192.168.0.157、192.168.0.158和192.168.0.159)上安装和配置Hadoop、Flink及其他大数据组件(如Hive、MySQL、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala)的具体步骤。首先,文档说明了环境准备,包括配置主机名映射、SSH免密登录、JDK安装等。接着,详细描述了Hadoop集群的安装配置,包括SSH免密登录、JDK配置、Hadoop环境变量设置、HDFS和YARN配置文件修改、集群启动与测试。随后,依次介绍了MySQL、Hive、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala和Flink的安装配置过程,包括解压、环境变量配置、配置文件修改、服务启动等关键步骤。最后,文档提供了每个组件的基本测试方法,确保安装成功。 适合人群:具备一定Linux基础和大数据组件基础知识的运维人员、大数据开发工程师以及系统管理员。 使用场景及目标:①为大数据平台搭建提供详细的安装指南,确保各组件能够顺利安装和配置;②帮助技术人员快速掌握Hadoop、Flink等大数据组件的安装与配置,提升工作效率;③适用于企业级大数据平台的搭建与维护,确保集群稳定运行。 其他说明:本文档不仅提供了详细的安装步骤,还涵盖了常见的配置项解释和故障排查建议。建议读者在安装过程中仔细阅读每一步骤,并根据实际情况调整配置参数。此外,文档中的命令和配置文件路径均为示例,实际操作时需根据具体环境进行适当修改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梧桐810

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

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

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

打赏作者

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

抵扣说明:

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

余额充值