C语言博客作业--数组

摘要:
Intmain(){输入数组以排序a[n];{inth=0;Intmain()}输入数组来排序a[n〕;{forj=0toj<]=temp;inta[n];i++){a[i]=0;Intmain(){intn;if(check(n)==1){printf(“YES”);intx;=n;if;
0.展示PTA总分

C语言博客作业--数组第1张

C语言博客作业--数组第2张

C语言博客作业--数组第3张

1.本章学习总结

1.1 学习内容总结

  • 顺序查找法:从数组的第一个内容开始查找,直到找到要找值。
    优点:写法简单易懂。
    缺点:查找次数过多,面对大数据花费时间过长。
  • 二分查找法:将数组排序后,从数组中间的数开始查找,当查找的数比中间的数大或者小的时候,取该数应处于的范围,再次取该范围中间的内容进行比较,直到找到正确的值。
  • 数组的插入:先查找要插入的位置,后将该位置之后的元素全向后移动一位之后再将元素替换到该位置
#include<stdio.h>
int main()
{
	输入要插入的数date;
	输入要插入的数的位置i;
	for j = n to j = i + 1;
	a[j] = a[j - 1];             //将要插入数的位置之后的项的值赋予后面一项//
	a[i] = date;
	
}
  • 数组的删除
#include<stdio.h>
int main()
{
	输入要删除的数据date;
        for i = 0 to i < n;
	for j = n to j >= i + 1;
	查找要插入的数的位置i;
        for j = i to j <n-1;
	a[j] = a[j + 1];             //将要插入数的位置之后的项的值赋予前面一项,使该位置的的值被之后一位位置的值覆盖/
	
}
  • 数组的排序方法:
    1:选择排序法:依次查找最大的值位置,将他与被查找数组内容的第一个项给位置替换;
#include<stdio.h>
int main()
{

	输入要排序的数组a[n];
	for i = 0 to i < n;
	{
		for j = i to j < n;
		{
			int h = 0;
			if (a[h] > a[j])
				a[h] = a[j]    //查找i位置之后的最小项//
		}
		temp = a[i];
		a[i] = a[h];
		a[h] = temp;          //替换最小项与i位置//
	}
}

2:冒泡排序法:多次查看数组,当出现前一个项比后一个项大时将该两项替换,是每次循环都能是最大的一个数移动到最末端,直到全部排序。

#include<stdio.h>
int main()
{

	输入要排序的数组a[n];
	for i = 0 to i < n-1;
	{
		for j = 0 to j < n-i-1;
		{
			if(a[j]>a[j+1])
			temp = a[j];
			a[j] = a[j+1];        
			a[j+!] = temp;         //当出现前一项比后一项大时,替换两项位置//
		}      
	}
}
  • 数据枚举用法
    调查电视节目受欢迎程度
#include<stdio.h>
#define N 9
int main()
{
	int n;
	int a[N];
	int i, j;
	for (i = 0; i < N; i++)
	{
		a[i] = 0;
	}
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d", &j);
		if (j<9)
		{
			a[j]++;
		}
	}
	for (i = 1; i < N; i++)
	{
		printf("%4d%4d
", i, a[i]);
	}
}
  • 哈希数组用法
    有重复的数据I
#include<stdio.h>
#define N 100001
int check(int n);
int main()
{
    int n;
    scanf("%d", &n);
    if (check(n) == 1)
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
        return 0;
}

int check(int n)
{
    int static num[100001];
    int i;
    int x;
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &x);
        if (num[x] == 1)
        {
            return 1;
        }
        else
        {
            num[x]=1;
        }
    }
    return 0;
}

1.2 本章学习体会

  • 数组多用在储存大数据,当面对多个数据需要保存是不需要写多个变量一一保存,节省代码量,且对数据进行排序,删除等操作也十分简便。
  • 两周代码量:2500
2.PTA实验作业

2.1 7-5 有重复的数据I

2.1.1 伪代码

#include<stdio.h>
#define N 100001
int check(int n);          
int main()
{
        输入要输入的数字个数n;
	if (check(n) == 1)      //判段输入的数是否有重复数据//
	{
		printf("YES");
	}
	else
	{
		printf("NO");
	}
	return 0;
}

int check(int n)
{
	int static num[100001];
	int i;
	for i=0 to i<=n
	{
		输入数字x;
		if (num[x] == 1) //如果该数字作为下标对应的数组的值为1,则该数字以存在过//
		{
			return 1;
		}
		else
		{
			num[x] = 1;   //如果该数字还未出现过,则将该数字作为下标对应的数组的值赋值为1,表示该数字存在过//
		}
	}
	return 0;
}

2.1.2 代码截图

C语言博客作业--数组第4张

C语言博客作业--数组第5张

2.1.3 造测试数据

输入数字个数输入数字结果
51 2 3 1 4YES
1010 1 7 5 6 -3 9 7 6 1 13YES
51 3 5 7 9NO

2.1.4 PTA提交列表及说明

C语言博客作业--数组第6张

原来是用两层单循环进行数据查重,由于数组的长度设定太小,调整之后分数增加一些,但最后两个测试点依旧是错的。
最后就仿照超星平台的做法改了代码。

2.2切分表达式——写个tokenizer吧

2.2.1 伪代码

#include<stdio.h>
#include<string.h>
#define H 80
int main()
{
	输入字符串a[H]:
	for i=0 to a[i]!='

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XGBoost学习笔记2图的最小环问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF整理-使用用户选择主题的颜色和字体

“Sometimes it's useful to use one of the selected colors or fonts the user has chosen in theWindows Control Panel Personalization applet (or the older Display Settings in Windows...

使用Nginx反向代理进行负载均衡

在这里简单记录一下,我使用Nginx反向代理进行负载均衡,将请求发送到两台tomcat上。 首先解压两个tomcat,解压Nginx,一台tomcat配置可以不用动,但是我为了更方便只是将它的端口改为91: <Connector port="91" protocol="HTTP/1.1" connectionTimeout="20000" redi...

浅析muduo库中的线程设施

muduo是目前我在学习过程中遇到的最具有学习意义的网络库,下文将分析muduo库中的基础设施--Thread和ThreadPool. 首先,介绍在多线程编程中不可缺少的同步措施--Mutex和Condition. Mutex /***Mutex.h***/ class MutexLock : boost::noncopyable { public:...

Web安全漏洞及攻击

背景介绍 先说一个在互联网上常见,但是普通人又不太理解的东西--“验证码”。 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:...

element 表单校验失败自动聚焦到失败的input框

1.在对应的input框上添加ref属性,直接根据ref就可精确地获取到元素 <el-form-item label="课程名称" :label-width="formLabelWidth+'px'" prop="title"> <el-input ref="title" v-model="form.title" plac...

13.solr学习速成之IK分词器

IKAnalyzer简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。 IKAnalyzer特性 a. 算法采用“正向迭代最细粒度切分算法”,支持细粒度和最大词长两种分词方式,速度最大支持80W字/秒(1600KB/秒)。   b. 支持多子处理器分析模式:中文、数字、字母,并兼容日文、韩文。  c. 较小的...