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); } }