华南师范计专机试java

本文介绍了如何使用Java编程语言实现将用户输入的正整数转换为二进制并写入文件,以及展示了插入排序的迭代和递归版本。
摘要由CSDN通过智能技术生成

10年

//1、输入 n 个十进制数转换成二进制写到文件,n 是随机得到的 //考虑到对于负数的二进制表示有补码、反码等,所以这里默认输入的整数都是正数。将十进制转换为二进制字符串的功能是通过自定义函数完成的

package test01;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;


public class TenYears {
    public static void main(String[] args) throws IOException {
        //输入N个十进制数
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        //FileInputStream时,使用的是字节流,但是有个问题无法解决,它只能读取英文字符,而中文字符是无法读取的,会出现奇怪的东西
        //File file = new File("src\\text10.txt");
        File file = new File("src\\text11.txt");
        //FileOutputStream fileOutputStream = new FileOutputStream(file,true);
        FileWriter fileWriter = new FileWriter(file);//字符流,这个操作就可以直接读入字符串了,//创建文件写入对象
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);//要传入FileWriter对象创建字符流写入对象
        System.out.println("请输入:");
        int n = random.nextInt(1,5);
        System.out.println(n);
        while (n>0) {
            int i = sc.nextInt();
            String str = toBinarry(i);
            System.out.println(str);
            //fileOutputStream.write(str.getBytes(StandardCharsets.UTF_8));
            bufferedWriter.write(str);
            bufferedWriter.newLine();
            n--;
        }
        //fileOutputStream.close();
        bufferedWriter.close();
        fileWriter.close();
    }
    public static String toBinarry(int num){
        String i = "" ;
        if(num == 1){
            return i+num;
        }
        LinkedList<Integer> list = new LinkedList<>();
        while (num != 1){
           int num1 =  num % 2;
           list.addFirst(num1);
           num = num / 2;
        }
        list.addFirst(1);
        for (Integer item : list) {
            i = i + item;
        }
        return i;
    }
}

2、写两个模板函数:插入排序法的迭代实现与递归实现

这个迭代是个啥意思,是非递归的意思吗?

以下是迭代算法

public class TenYears {
    public static void main(String[] args) {
        //2、写两个模板函数:插入排序法的迭代实现与递归实现
        //递归实现
        int[] nums = {8,5,7,7,9,4,6,1,2};
        diGui(nums,0);
        Arrays.toString(nums);
        for (int num : nums) {
            System.out.print(num+" ");
        }
    }
    public static void diGui(int[] nums,int length){
        if(length == nums.length) return;
        int l = length;
        //这个插入前面的位置的算法也可以抽象成一个函数。
        for(int i = l; i >= 0; i--){
            if(nums[i] > nums[l]){
                int temp = nums[l];
                while (l>i){
                    nums[l] = nums[l-1];
                    l--;
                }
                nums[i] = temp;
            }
        }
        diGui(nums,length+1);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值