fyzn12
RSS SITEMAP

Articles

  • 基本排序算法总结

    排序算法总结 1 选择排序 1.1 思路分析 ① 在0~N-1 范围上找到最小值,将其放在0位置上; ② 在1~N-1 范围上找到最小值,将其放在1位置上; … 知道确定最后一个值的位置。 1.2 代码实现 public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } // 0 ~ N-1 找到最小值,在哪,放到0位置上 // 1 ~ n-1 找到最小值,在哪,放到1 位置上 // 2 ~ n-1 找到最小值,在哪,放到2 位置上 for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; // i ~ N-1 上找最小值的下标 for (int j = i + 1; j < arr.
  • 常见算法篇

    常见算法总结篇 递归算法 递归算法有一下几个特点 * 递归算法必须设定循环终止条件,称为递归出口 * 方法里调用自身 如下面两个例子: 1. 一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。 例:n=1237 函数设定如下: //编写递归函数 private static void getNUm(int n){ //设置递归终止条件 System.out.printl(n); if(n<=5000){ //调用自身 getNum(n*2); System.out.printl(n); } } 2. 第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大? 程序设定如下 //n代表传入的人的数量 private static int getAge(int n){ //设定递归终止条件 if(n==1) return 10; //调用自身并返回; return getAge(n-1)+2; } 排序算法 快速排序算法 排序步骤总结如下: * 从数组中挑出一个元素,称为“基准”(pivot); * 重新排序数组,所有元素比基准值小的摆放在基准前面,所有元素比基准大的摆放在基准的后面 (相同可以任意放一边)。这个分割之后,该基准就是他的最后的位置,这个称为“分割”操作 * 递归地把小于基准值元素的子数组和大于基准元素的子数组排序。 下面看一个列子: 请用快速排序排序下面的数组内的数字:String[] strVoid=new String[]{"11","66","22","0","55","22","0","32"}; 代码设计如下:严格按照上面三个步骤设计 //三个参数,排序的数组,排序左基点,排序右基点 private static void quickSort(String[] strViod,int left,int right){ //先判断左右指针是否越界 if (left>right){ returen; } //定义基准位置,左右移动时的指针以及中间变量 String standard,tmp; //步骤一:确定基准位置(可以随意) standard = strViod[left]; int i,j; i = left; j = right; //步骤二:初步与基准值比较,确认基准值的左右集合 while(i<j){ //首先进行基准值右侧值的判断,这里建议将String转为int进行判断,别用compareTo进行判断 while(Integer.
  • 排序算法

    排序算法的简单介绍 1 选择排序 1.1 选择排序的理解 选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是: 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序 的数据元素的个数为零。选择排序是不稳定的排序方法。 1.2 选择排序的实现 /** * @author ZhangRongJun * @version 1.0 * @date 2020/9/14 18:41 * @description:选择排序 */ public class SelectionSort { public static void sort(Comparable[] a) { int N = a.length; //将a[]按升序排序 for (int i = 0; i < N; i++) { int min = i; for (int j = i+1;j<N;j++){ if (less(a[j],a[min])){ min = j; } } exch(a,i,min); } } private static boolean less(Comparable v,Comparable w){ return v.
  • 认真刷面试题的第一天

    牛客网的第一天 1 关于java的异常处理机制:当某个线程抛出OutOfmemberError时,其他线程有可能不收影响 2 关于运算的理解 与运算(&) 进行运算的两个数据,按二进制位进行“与”运算。 规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即: 两位同时为“1”,结果才为“1”,否则为0 或运算(|) 进行运算的两个数据,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 即 :参加运算的两个对象只要有一个为1,其值为1。 非运算:~ 1取0,0取1 ~1 = 0, ~0 = 1 ~(10001) = 01110 异或运算(^) 参加运算的两个数据,按二进制位进行"异或"运算 参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。 考点:交换两个变量的值(不借助第三个变量) 使用异或运算符: 例:a=6,b=5 核心代码: a = a ^ b; b = a ^ b; a = a ^ b; 经过上面的介绍下面这些运算应该就能理解了java中的 |= 、&= 、^= 运算符的理解 3 filesort 并不是磁盘文件进行排序,只是进行了一个排序操作,但是查询次数过多确实会对性能造成影响 4 在java中是不能强制垃圾回收器立即执行的,system.
  • SpringBoot提供的五种异常机制

    SpringBoot中的异常处理方式 自定义错误页面 @ExceptionHandle注解处理异常 @ControllerAdvice + @ExceptionHandle注解处理异常 配置SimpleMappingExceptionResolver处理异常 自定义HandleExceptionResolver类处理异常 1 自定义错误页面 1.1 SpringBoot的默认异常机制详解 SpringBoot默认的异常机制:SpringBoot默认已经提供了一套处理异常的机制。 一旦程序中出现了异常,SpringBoot会向/error的url发送请求。在SpringBoot中提供了一个 叫BasicExceptionController来处理/error请求,然后跳转到默认显示的页面来展示异常信息。 1.2 自定义错误界面 如果我们需要将所有的异常统一跳转到自定义错误页面,需要在classpath下创建一个templates目录(即在resources目录下创建templates目录),在该目录下创建一个名为error.html的页面。 2 基于@ExceptionHandler注解处理异常 2.1 创建指定处理的异常 /** *java.lang.ArithmeticException *该方法需要返回一个ModelAndView:目的是可以让我们封装异常信息以及视图的指定 *参数Exceptione:会将产生异常对象注入到方法中 */ @ExceptionHandler(value={java.lang.ArithmeticException.class}) publicModelAndViewarithmeticExceptionHandler(Exceptione){ ModelAndViewmv=newModelAndView(); mv.addObject("error",e.toString()); mv.setViewName("error1"); returnmv; } /** *java.lang.NullPointerException *该方法需要返回一个ModelAndView:目的是可以让我们封装异常信息以及视图的指定 *参数Exceptione:会将产生异常对象注入到方法中 **/ @ExceptionHandler(value={java.lang.NullPointerException.class}) publicModelAndViewnullPointerExceptionHandler(Exceptione){ ModelAndViewmv=newModelAndView(); mv.addObject("error",e.toString()); mv.setViewName("error2"); return mv; } 2.2 使用该方法的总结 使用@ExceptionHandler注解处理异常时,首先编写异常页面error.html,其次创建Controller类,编写基于注解@ExceptionHandle注解的方法,并且在该方法中必须指定想要助理异常的名称如上面的java.lang.NullPointerException.class、java.lang.ArithmeticException.class。 3 使用@ControllerAdvice + @ExceptionHandler注解处理异常 3.1 创建一个全局异常类使用ControllerAdvice注解 /** *全局异常处理类 **/ @ControllerAdvice public class GlobalException { /** * java.