PAT周总结-11.06-11.10

PAT周总结-11.06-11.10

1.java输入:Scanner;BufferedReader;

BufferedReader更省时间

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String str=sc.nextLine();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String str=in.readLine();
    }
}

2.将字符串转换成单个字符;

String类有个toCharArray()可以将String转化为char[]数组;

Strin分割为为string[]数组

String s1 = "String";
String s1 = "String 123 456 789";
for (int i=0;i<s1.length();i++){
    char n=s1.charAt(i);//将字符串转换成单个字符
}
//String转化为char[]数组
char [] arr_a=s1.toCharArray();

//Strin分割为为string[]数组
String[] input = s2.split("\\s+");//将被除数A与除数B分开为两个字符串
3.int转为String;String转为int
int i=0;
String str="123456"
//int转为String
str=Integer.toString(i)
//String转为int
i=Integer.parseInt(str)
4.找素数
import static java.lang.StrictMath.sqrt;

for (int i = 2; i <=N ; i++) {
//重点:此处一定要将j的循环的范围缩小到根号下i的近似整数,否则运算时间太长,无法通过pat平台的的测试,如果没有运算时间限制,此处也可不缩小j的循环的范围。
	int i_sqrt = (int)sqrt(i);
	for (int j = 2; j <=i_sqrt ; j++) {
		if (i%j==0){
            //素数
            break;
		}
	}
}

1007找素数对中发现:进行很简单的运算时,c++只需要5ms,而java需要90-100ms,而遇到很大的数据时,java与c++花费的时间又差不多。

5.整数数组升序排序
import java.util.Arrays;
public class testsort {
    public static void main(String[] args) {
        Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a);
        for(int arr:a) {
            System.out.print(arr + " ");
        }
        //输出值为:0 1 2 3 4 5 6 7 8 9
    }
}
6.整数数组降序排序
import java.util.Arrays;
import java.util.Collections;
public class testsort {
    public static void main(String[] args) {
        //这里不能用int类型 要用Integer类型
        Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a, Collections.reverseOrder());
        for(int arr:a) {
            System.out.print(arr + " ");
        }
        //输出值为:9 8 7 6 5 4 3 2 1
    }
}
7.in.hasNext()判断是否有下一个输入
8.int取值区间

i n t 取 值 区 间 为 : [ − 2 31 , 2 31 ] int 取值区间为: [-2^{31},2^{31}] int[231,231]

9.精确到小数点后1位

最简单:System.out.format("%.1f",pi);

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class test {
    public static void main(String[] args) {
        double pi = 1.23456789;
        //直接用格式化输出 , f前的数字为精确到几位
        //注意:格式化输出不换行
        System.out.format("%.1f",pi);
        System.out.println();

        //使用DecimalFormat,精确到几位,要按后面的格式
        //如果精确到小数点后5位的话,则为 "0.00000"
        DecimalFormat df = new DecimalFormat("0.0");
        System.out.println(df.format(pi));

        //使用BigDecimal,注意:填入参数中的数字为:精确到几位然后加一的值
        BigDecimal bd = new BigDecimal(pi,new MathContext(2, RoundingMode.HALF_UP));
        System.out.println(bd);
    }
}
10.冒泡排序:
public class maopao {
    static int[] BubbleSort(int a[], int len)
    {
        for (int i = len-1; i >0 ; i--) {
            for (int j = 0; j <i ; j++) {
                if (a[j]>=a[j+1]){
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
        return a;
    }

    public static void main(String[] arg){
        int []a={1,5,8,6,9,10,15};
        a= BubbleSort(a,6);
        for (int i = 0; i <a.length ; i++) {
            System.out.print(a[i]+" ");
        }
    }
}
11.快速排序:
public class quicksort {
    public static int protition(int r[],int first,int end){
        int i=first,j=end;
        while (i<j){
            while (i<j&&r[i]<=r[j]){
                j--;
            }
            if (i<j){
                int temp;
                temp=r[i];
                r[i]=r[j];
                r[j]=temp;
                i++;
            }
            while (i<j&&r[i]<=r[j]){
                i++;
            }
            if (i<j){
                int temp;
                temp=r[i];
                r[i]=r[j];
                r[j]=temp;
                i++;
            }
        }
        return i;
    }

    public static int[] quicksort(int r[],int first,int end){

        if (first<end){
            int position=protition(r,first,end);
            quicksort(r,first,position-1);
            quicksort(r,position+1,end);
        }
        return r;
    }

    public static void main(String[] args) {
        int []a={1,5,8,6,9,10,15};
        a=quicksort(a,0,6);
        for (int i = 0; i <a.length ; i++) {
            System.out.print(a[i]+" ");
        }
    }
}

未通过题目:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值