C语言——数组博客作业

C语言博客04——数组

0.pta总分


1.学习总结

(1).数据查找

1.遍历数组,找到数据
2.二分查找法
在数组数值顺序排列下,可以用while循环,判断中间数值的大小与被查找数值比较,偏大则在左半区继续取一半判断,反之在右半区判断,直到找到。

int BinSearch(int arr[],int len,int key)                          //(二分法)
{
	int low=0;                         //定义初始最小
	int high=len-1;                 //定义初始最大
	int mid;                            //定义中间值
	while(low<=high)
	{
		mid=(low+high)/2;              //找中间值
		if(key==arr[mid])               //判断min与key是否相等
			return mid;    
		else if(key>arr[mid])             //如果key>mid  则新区间为[mid+1,high]
			low=mid+1;
		else                                       //如果key<mid  则新区间为[low,mid-1]
			high=mid-1;
	}
	return -1;                             //如果数组中无目标值key,则返回 -1 ;
}

(2).插入数据

找到数据插入的位置,插入数据并移动数组。

(3).数据删除

1.数组左移
找到要删除的数,将其后面的数组左移

2.构建新数组

(4).排序

1.选择排序(找到最大的一个元素,和末尾的元素交换,然后再从头开始,查找第1 个到第N-1 个元素中最大的一个,和第N-1 个元素交换……)

2.冒泡排序(采用的是相邻数两两进行比较的思想。如果后一个比前一个大或者小,则将其调换位置,直至所有的数都比较完)

(5).枚举

int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

(6).哈希数组用法

可以用来统计数值出现次数,可用来删除重复元素或判断是否有重复元素

(7).字符数组,字符串

特点:都以'\0'结束,数组长度要比输入的数据多一位

字符数组的输入

1.scanf输入(字符串没有空格的情况下,无须加&号)

2.fgets输入

2.PTA实验作业

2.1 7-6 简化的插入排序

2.1.1伪代码

2.1.2代码截图

2.1.3

#include<stdio.h>
int main()
{
	int n, i, x, loc = 0;
	static int a[9];
	scanf("%d", &n);
	for (i = 0; i <= n - 1; i++)scanf("%d", &a[i]);
	scanf("%d", &x);
	for (i = 0; i <= n - 1; i++)
	{
		if (x < a[i])
		{
			loc = i;
			break;
		}
	}
	if (i > n - 1)a[n] = x;
	else
	{
		for (i = n; i >= loc + 1; i--)
		{
			a[i] = a[i - 1];
		}
		a[loc] = x;
	}
	for (i = 0; i <= n; i++)printf("%d ", a[i]);
}

我的代码比较简洁,他的代码更细致,容易读懂

2.2 7-14 找鞍点

2.2.1 伪代码

2.2.2 代码截图

2.2.3

差不多,差不多

2.3 7-6 切分表达式

2.3.1 伪代码


运用fgets输入字符串,切分单个字符判断,用printf("%c")输出单个字符

2.3.2 代码截图

2.3.3

总体思路差不多,老师的代码判断的时候更细致,条理更清晰,这需要我学习

posted @ 2020-12-13 22:17  写不下去了,淦  阅读(114)  评论(0编辑  收藏  举报