zoukankan      html  css  js  c++  java
  • C语言博客作业04--数组

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C语言博客作业04--数组
    这个作业的目标 学习数组相关内容
    姓名 雷正伟

    0.PTA得分

    1.本章学习总结

    1.1 学习内容总结

    1.11 查找数据

    二分法查找
    二分法查找

    • 优点:查找效率高
    • 缺点:要求数组必须有序

    顺序法(普通)查找
    普通法查找

    • 优点:数组不要求有序
    • 缺点:数组数据较大时,查找效率低

    1.12 插入数据

    PTA题目:简化的插入排序
    简化的插入排序
    代码以及调试结果
    简化的插入排序

    1.12 删除数据

    **PTA题目:数组元素的删除 **
    数组元素的删除
    代码实现

    #include<stdio.h>
    #define max 100
    int main()
    {
        int a[max], n, m, num, flag;
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        scanf("%d", &num);
        flag = num;
        while (num--)
        {
            scanf("%d", &m);
            for (int i = m - 1; i < n; i++)
            {
                a[i] = a[i + 1];
            }
        }
        for (int i = 0; i < n - flag; i++)
        {
            if (i == n - flag - 1)
            {
                printf("%d", a[i]);
            }
            else
            {
                printf("%d ", a[i]);
            }
        }
        return 0;
    }
    

    1.12 数组的排序

    冒泡法排序

    原理:
    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个
    2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
    3. 针对所有的元素重复以上的步骤,除了最后一个
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
    • 这里引用一个GIF图更清晰的理解冒泡法排序
      冒泡法排序

    PTA题目:冒泡法排序
    冒泡法排序
    代码实现

    #include <stdio.h>
    int main()
    {
    	int N, K, i, j;
    	int count = 0;
    	int temp;
    	int a[100];
    	scanf("%d %d", &N, &K);
    	for (i = 0;i < N;i++)
    	{
    		scanf("%d", &a[i]);
    	}
    	for (i = 0;i < N;i++)      //重复比较至排序结束
    	{
    		for (j = 0;j < N - i - 1;j++)    //比较元素大小
    		{
    			if (a[j + 1] < a[j])
    			{                     //前一个比第二个元素大则交换
    				temp = a[j];
    				a[j] = a[j + 1];
    				a[j + 1] = temp;
    			}
    		}
    		count++;
    		if (count == K)
    			break;
    	}
    	for (i = 0;i < N;i++)
    	{
    		if (i < N - 1)
    			printf("%d ", a[i]);
    		else
    			printf("%d", a[i]);
    	}
    	return 0;
    }
    

    但是当一个数组的数据较多时冒泡法排序就会很不实用

    选择法排序

    • GIF图举例
      选择法排序
      PTA题目:选择法排序
      选择法排序
      代码实现
    #include<stdio.h>  
    int main()
    {
        int n, i, index, temp;
        int a[11];
        scanf("%d", &n);
        for (i = 0;i < n;i++)
            scanf("%d", &a[i]);
        for (i = 1;i < n;i++)
        {
            for (index = 0;index < n - i;index++)
            {
                if (a[index] < a[index + 1])
                {                 //后一个数比前一个数大则交换
                    temp = a[index];
                    a[index] = a[index + 1];
                    a[index + 1] = temp;
                }
            }
        }
        for (i = 0;i < n;i++)
        {
            if (i < n - 1)
            {
                printf("%d ", a[i]);
            }
            else
            {
                printf("%d
    ", a[n - 1]);
            }
        }
        return 0;
    }
    

    1.13哈希数组

    PTA题目:有重复的数据I
    有重复的数据I
    代码实现

    #include<stdio.h>
    #define MAX 100001
    int SameData(int n);
    int main()
    {
    	int n;
    	scanf("%d", &n);
    	if (SameData(n))
    	{
    		printf("YES");
    	}
    	else
    	{
    		printf("NO");
    	}
    	return 0;
    }
    
    int SameData(int n)
    {
    	static int a[MAX];
    	int i, data;
    	for (i = 1;i <= n;i++)
    	{
    		scanf("%d", &data);
    		if (a[data] == 1)
    		{
    			return 1;
    		}
    		else
    		{
    			a[data] = 1;
    		}
    	}
    	return 0;
    }
    

    1.14字符数组

    字符数组的存储

    字符串可以存放在一维数组中,例如:

    static char s[6]={'H','a','p','p','y',''};
    

    也可以使用字符串常量,例如上述代码等价于:

    static char s[6]={"Happy"};
    

    static char s[6]="Happy";
    

    将字符串存入数组时,由于它有一个结束符'',数组长度至少是字符串的有效长度+1。如果数组长度大于字符串的有效长度+1,则数组中除了存入的字符串,还有其他内容,即字符串只占用数组的一部分。

    • 字符串由有效字符和字符串结束符''组成

    字符输入的函数

    fgets()函数

    描述:C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

    函数声明
    char *fgets(char *str, int n, FILE *stream) 
    
  • 相关阅读:
    Linux设备树(四 中断)
    Linux设备树(三 属性)
    Linux设备树(二 节点)
    责任链设计模式
    获取服务器内存和可用线程
    秒杀抢购思路解析
    Hystrix 用法及注解用法
    object is not an instance of declaring class
    sqlserver 截取字符串
    sqlserver 转化函数
  • 原文地址:https://www.cnblogs.com/lzwx2/p/14129510.html
Copyright © 2011-2022 走看看