Java面试题之冒泡排序:
冒泡排序,听这个名字就可以知道,利用冒泡的方式将最大的(或者最小的,本文介绍最大的)移动到最后一位。
例如一个数组有如下值;
1 int[] intForArray = {32,15,9,71,2,6,10};
排序需要进行的步骤是:
首先将32依次和后面的值进行比较,如果比他大就移动到后面。
第一次排序的顺序应该是:
15,9,32,2,6,10,71;
这是最后一位已经是最大的了,故不需要对最后一位进行排序;
第二次排序就可以忽略掉最后一位;
下来就是:9,15,2,6,10,32;
依次类推;
Java代码具体实现代码如下:
1 public static int[] maoPao(int[] arr) { 2 3 for (int i = 0; i < arr.length - 1; i++) { // 总共需要比较多少次; 4 for (int j = 0; j < arr.length - i - 1; j++) { // 每个数需要和多少个之后的数比较; 5 if (arr[j] > arr[j + 1]) { 6 arr[j] ^= arr[j + 1]; 7 arr[j + 1] ^= arr[j]; 8 arr[j] ^= arr[j + 1]; 9 } 10 } 11 } 12 return arr; 13 }
Java面试题之斐波那契数列:
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
先上代码吧;
1 public class Test01 { 2 3 public static void main(String[] args) { 4 int fun = fun(5); 5 System.out.println("结果是:" + fun); 6 } 7 8 private static int fun(int i) { 9 10 if (i == 1 || i == 2) { 11 return 1; 12 } else { 13 return fun(i - 1) + fun(i - 2); 14 } 15 16 } 17 }
解析如下:
fun(5) = fun(4) + fun(3);
fun(4) = fun(3) + fun(2);
fun(4) = fun(3) + 1 ;
fun(3) = fun(2) + fun(1);
fun(3) = 2 ;
fun(4) = 2 + 1 ;
fun(5) = 2 + 3 ;
fun(5) = 5 ;
持续更新,希望可以帮到各位……