实训java第五课 递归 冒泡排序 插入排序 选择排序

 1,递归使用简单,逻辑清晰,但是效率低。递归次数多了容易栈溢出。

package com.tarena.day05; public class Recursion { /** * 递归的演示 * 能用递归的地方都能用循环,递归效率低,占用栈空间,用数学公式效率高。 */ public static void main(String[] args) { System.out.println(g(6600)); } public static int g(int n) if(n == 1) return 1; return n + g(n-1); } }

2,排序 冒泡排序,选择排序,插入排序。插入排序能比前两个排序效率高,因为循环的次数少,所以比较的次数就少,而且比较之后是数据移动而不是交换。

 package com.tarena.day05; import java.util.Arrays; public class SortDemo { /** *排序 */ final static int [] arr = {8,3,5,1,4,2,7}; public static final int a = 3; public static void main(String[] args) { int[] arr = {8,3,5,1,4,2,7}; // bubbleSort(arr); insertSort(arr); // selectSort(arr); System.out.println(Arrays.toString(arr)); } /** * 冒泡排序 * @param arr */ private static void bubbleSort(int[] arr) { boolean flag = true; for (int i = 0; i < arr.length && flag; i++) { flag = false; for (int j = 0; j < arr.length-1 - i; j++) { if(arr[j] > arr[j+1]) { flag = true; int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } System.out.println("第"+ i +"轮排序结果:"+Arrays.toString(arr)); } } private static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { int temp = arr[i]; int t =i; for (int j = i -1; j >= 0; j--) { if(arr[j]>temp) { arr[j+1] = arr[j]; t = j; } else break; } arr[t] = temp; System.out.println("第"+ i +"轮排序结果:"+Arrays.toString(arr)); } } /** * 选择排序 * @param arr */ public static void selectSort(int[] arr) { for(int i = 0;iarr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } System.out.println("第"+ i +"轮排序结果:"+Arrays.toString(arr)); } } }

你可能感兴趣的:(实训java第五课 递归 冒泡排序 插入排序 选择排序)