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

    0.PTA总分展示

    1.本章学习总结

    1.1学习内容总结

    数组中如何查找数据,有哪些做法

    • 一般遍历法:
      对于数组的查询,其实就是对数组中数据做一个遍历。最常用的方法就是通过循环对数组中的元素逐个取值,并与参考值(要查询的值)做比对,并处理结果。
    • 二分查找法(数据按顺序排列):
    
    while (low <= high)
    {
    	mid = (high + low) / 2;
    	if (a[mid] == date)
    	{
    		index = mid
    			break;
    	}
    	if (a[mid] < date)
    		low = mid + 1;
    	else
    		high = mid - 1;
    }
    
    

    数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法

    • 伪代码:
    
    输入数据
    for(遍历数组)
       if(a[i]==date)
       index=i找到插入位置
       for(i=index;i<n;i++)将该位置以后的数据往后移一位
    end for
    输出更改后的数组
    
    

    数组中如何删除数据,这个有多种做法,请一一展示。

    • 数组左移法:
    for (j=1; j <= k; j++)
      {
         scanf("%d", &x);
         for (i = x-1; i < n-1 ; i++)
          {
    	a[i] = a[i + 1];
          }
      }
    
    • 再定义数组法:
    int b[n-1]//n为原数组长度
    for(i=0;i<n;i++)
    {
       if(i<index)
       {
          b[i]=a[i];
       }
       else
       {
        b[i]=a[i+1];
       }
    }
     
    

    数组中目前学到排序方法,主要思路?

    • 冒泡排序:

    代码:

    function bubbleSort(arr) {
        var len = arr.length;
        for (var i = 0; i < len - 1; i++) {
            for (var j = 0; j < len - 1 - i; j++) {
                if (arr[j] > arr[j+1]) {       // 相邻元素两两对比
                    var temp = arr[j+1];       // 元素交换
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return arr;
    }
    
    
    • 选择排序:

    代码:

    function selectionSort(arr) {
        var len = arr.length;
        var minIndex, temp;
        for (var i = 0; i < len - 1; i++) {
            minIndex = i;
            for (var j = i + 1; j < len; j++) {
                if (arr[j] < arr[minIndex]) {    // 寻找最小的数
                    minIndex = j;                // 将最小数的索引保存
                }
            }
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        return arr;
    } 
    
    

    数组做枚举用法,有哪些案例?

    C语言定义数组时使用枚举作为数组的下标
    
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    

    还有就是定义字符数组作为枚举变量。

    哈希数组用法,目前学过哪些案例,举例展示。

    用哈希数组的下标计数,用内容做数量的大小。

    2.PTA实验作业

    2.1 7.5有重复的数据I

    2.1.1伪代码

    定义一个函数IsSame(int n);
    在函数中定义一个数组a[N],利用下标来计录数据,
    for读入数据并判断是否有相同的数据
    是则返回1,不是则令a[date]=1
    end for
    返回0;
    在主调函数中判断返回值进而输出结果。
    
    

    2.1.2代码截图

    2.1.3造测数据

    输入数据 输出数据 说明
    5 1 2 3 1 4 YES 同样例
    5 1 1 2 3 4 YES 第一个有重复

    2.1.4 PTA提交列表及说明

    1:没有考虑到数据本身可能是个很大的数,导致数组b出错
    2:控制循环的条件没有写对

    2.2 7.9调查电视节目受欢迎程度

    2.2.1伪代码

    定义一个数组a用来存放投票的数据
    再定义一个数组用下标表示对应选项,内容表示票数
    for读入数据 end for
    for b[a[i]]++
    end for 
    for 输出b数组从1到8下标对应的值
    

    2.2.2代码截图

    2.2.3造测数据

    输入数据 输出数据 说明
    10 3 4 7 6 3 9 2 3 1 8 1 1 2 1 3 3 4 1 5 0 6 1 7 1 8 1 同样例
    全投1 1号得10票

    2.2.4PTA提交列表及说明

    1:没有考虑到投票可能不在备选范围中的情况
    2:在统计前加一个判断就可以了

    2.3 7.5找鞍点

    2.3.1伪代码

    定义a[] 定义函数GetPoint(int a[][N], int n)
    for 读入数据  end for
    在函数中
    定义maxindex
    for
    index=0
    判断每一行中的最大值
    并把下标给maxindex
    end for
    for
    让列等于index
    判段该数是否是该列最小的
    end for
    若内循环执行一遍输出结果
    若外循环执行一遍则输出NONE
    
    

    2.3.2代码截图

    2.3.3造测数据

    输入数据 输出数据 说明
    4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 2 1 同样例
    2 2 2 2 2 0 1 最小规模,且有相同选第一个


    1:在每次找出行最大,判断列数据是否满足后没有将maxindex归零
    2:在外层循环中插个maxindex归零就可以了

  • 相关阅读:
    导出excel 文件
    导入excel
    django 中自定义过滤器
    机器学习&深度学习资料收集
    USACO Section 1.4 Arithmetic Progressions 解题报告
    POJ-1062 昂贵的聘礼 解题报告
    USACO Section 1.3 Ski Course Design 解题报告
    USACO Section 1.3 Wormholes 解题报告
    USACO Section 1.3 Combination Lock 解题报告
    USACO Section 1.3 Prime Cryptarithm 解题报告
  • 原文地址:https://www.cnblogs.com/19wangluo-Lishaoqiang/p/11878063.html
Copyright © 2011-2022 走看看