栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥杯学习小结1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯学习小结1

1.排序

在比赛中尽量使用Java自带的排序算法,此类算法平均效率比冒泡排序和选择排序算法高,也可以减少很多写代码的时间。
import java.util.Arrays;

int a[]={1,2,3,4,5};

Arrays.sort(a);

也可以根据题目要求写效率更高的桶排序、归并排序等。

2.全排序

全排序就是从n个元素当中选出m个元素,按照一定的顺序排列。

当m=n时,就叫做全排列。

而想要实现全排列可以分为两部分:

(1)记录第一个元素

(2)对剩下的元素排序

以【1,2,3】为例

1【2,3】的全排列有

1,2【3】的全排列1,2,3;

1,3【2】的全排列1,3,2;

同理,

2【1,3】的全排列有

2,1,3;

2,3,1;

3【1,2】的全排列有

3,1,2;

3,2,1;

所以可以创建一个方法fullSort接收三个参数:一个数组arr[],一个起始位置start,一个终止位置end。

方法共分两步走:

(1)记录第一位元素

数组arr从start到end的所有记录都可以出现在第一个位置,直接写一个for循环,考虑所有的情况。在for循环中,swap方法就是交换i和start位置的数,保证当前i指向的记录出现在第一个位置,也就是start指向的位置。

(2)剩余元素接着排序

这就是一个递归函数的调用,只需要修改起始位置,也就是start+1,因为start的位置已经放了记录,所以只需要继续做从start+1到end的全排列即可。

(3)swap方法的作用

因为数组传递的是地址,所以所有的修改对所有人都是共享的,因此为了保证每一次的交换不会对下一次的交换产生影响,要重新交换一下位置,也就是复原,不然对下一次的交换就有影响了。

递归的终止条件就是当start==end,也就是只有一个记录需要做全排列,也就是到了最后一个记录,这就是全排列的一种情况,输入本次的记录,也就是数组arr即可。(同时可以直接打印出来)

完整代码见下:

public class Main {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4 };
        fullSort(arr, 0, arr.length - 1);
    }

    public static void fullSort(int[] arr, int start, int end) {
        // 递归终止条件
        if (start == end) {
            for (int i : arr) {
                System.out.print(i);
            }
            System.out.println();
            return;
        }
        for (int i = start; i <= end; i++) {
            swap(arr, i, start);
            fullSort(arr, start + 1, end);
            swap(arr, i, start);
        }
    }

    private static void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

}

全排列还可以再定义一个数组visit[],用来判定元素中元素是否已经被排序的方法来实现。

3.数据结构

常用API如下:

(1)ArrayList类

ArrayList sites = new ArrayList();//初始化

sites.add("Runoob");//添加元素

System.out.println(sites.get(1));  // 访问第二个元素

sites.set(1, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值

sites.remove(3); // 删除第四个元素,都写的是下标位置

System.out.println(sites.size());//计算ArrayList中元素个数

sites.contains();//判断元素是否在arraylist中

(2)linkedList类

linkedList sites = new linkedList();

 sites.add("Google");

其他获取、移除操作和第一类相似。

(3)HashMap类

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射

  HashMap Sites = new HashMap();

 Sites.put(1, "Google");

效果:1=Google;

我们可以使用 get(key) 方法来获取 key 对应的 value:

System.out.println(Sites.get(3));

Sites.remove(4);//删除对应元素

全部删除用clear();

4.String和StringBuffer类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder sb = new StringBuilder(10);

sb.append("Runoob.."); //添加

sb.append("!");

sb.insert(8, "Java");//插入位置和插入元素

sb.delete(5,8);//要删除的位置范围

String[] split(String regex) //根据给定正则表达式的匹配拆分此字符串。
String substring(int beginIndex, int endIndex) //返回一个新字符串,它是此字符串的一个子字符串。(包括beginIndex,不包括endIndex)
char[] toCharArray() //将此字符串转换为一个新的字符数组。
String valueOf(int i)  //返回 int参数的字符串 int形式。

5.取模

//如保留后四位数,则需要%10000(保留几位,1的后面就跟几个0)

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号