冒泡排序 选择排序 递归思想
package com.sj.dncourse; /** * Created by 96178 on 2017/11/28. * 单元测试 */ public class Test { /** * 冒泡排序(5次以下,建议使用) * @param arr */ public void bubbleSort(int[] arr){ for(int j=0;j<arr.length;j++) { boolean flag=true; for (int i = 0; i < arr.length - 1; i++) { //相邻元素比较大小,如果前面大于后面,则调换位置 if (arr[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; flag=false;//调换过位置就设为false,否则说明顺序是正确的,不需要进行接下来的循环,提升性能 } } if(flag){ break; } } } /** * 选择排序 * @param arr */ public void selectSort(int[] arr){ for(int j=0;j<arr.length;j++){ int temp; for(int i=j;i<arr.length-1;i++){ if(arr[j]>arr[i]){ temp=arr[j]; arr[j]=arr[i]; arr[i]=temp; } } } } /** * 递归思想排序(压栈) * @param n */ public void fun(int n){ if(n<0){ return; }else{ fun(n-1); System.out.print(" "+n); } } /** * 递归思想解决斐波那契数列 * 1 1 2 3 5 8 13 21 34 55 89 */ public int FibonacciSequence(int n){ if(n==1|| n==2){ return 1; }else { return FibonacciSequence(n - 1) + FibonacciSequence(n - 2); } } /** * 递归思想 汉诺塔游戏思想 * @param n 盘子的个数 * @param start 开始的柱子编号 * @param middle 中间的柱子编号 * @param end 后面的柱子编号 */ public void hanoi(int n,int start,int middle,int end){ if(n<=1){ System.out.println("柱子编号"+start+" ----->编号"+end); }else{ hanoi(n-1,start,end,middle);//把第一个上的n-1哥移动中间 System.out.println("柱子编号"+start+" ----->编号"+end);//把第一个上的一个移到最后 hanoi(n-1,middle,start,end);//把中间的n-1个一道最后 } } @org.junit.Test public void main(){ int[] array1=new int[]{3, 1, 5, 8, 2, 9, 4, 6, 7}; int[] array2=new int[]{3, 1, 5, 8, 2, 9, 4, 6, 7}; System.out.println("初始数组: "); printArray(array1); System.out.println("冒泡排序后: "); bubbleSort(array1); printArray(array1); System.out.println("选择排序后: "); selectSort(array2); printArray(array2); System.out.println("递归思想1: "); fun(3); System.out.println("递归思想2: 斐波那契 "); System.out.print(FibonacciSequence(5)); System.out.println("递归思想3: 汉诺塔游戏思想 "); hanoi(5,1,2,3); } /** * 打印数组 * @param a */ private void printArray(int[] a){ for(int i:a){ System.out.print(" "+i); } System.out.println(); } }
as 单元测试运行的代码结果为: