zoukankan      html  css  js  c++  java
  • 算法

    递归(Recursion)

    定义--一种常见的解决问题的方法,即把问题逐渐简单化。基本思想是“自己调用自己”。

    组成--递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。

        递归体。解答:什么时候需要调用自身。

     1 public class A {
     2     public static long factorail(int n){
     3         if(n==1){    //递归头
     4             return 1;
     5         }else{        //递归体
     6             return n*factorail(n-1);
     7         }
     8     }
     9     public static void main(String[] args){
    10         System.out.println(factorail(5));
    11     }
    12 }

     冒泡排序

     1 public class Test {
     2     public static void main(String[] args) {
     3         int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5,8 };
     4         sort(values);
     5         System.out.println(Arrays.toString(values)); 
     6     }
     7     public static void sort(int[] values) {
     8         int temp;
     9         for (int i = 0; i < values.length; i++) {
    10             for (int j = 0; j < values.length - 1- i ; j++) {
    11                 if (values[j] > values[j + 1]) {
    12                     temp = values[j];
    13                     values[j] = values[j + 1];
    14                     values[j + 1] = temp;
    15                 }
    16             }
    17         }
    18     }
    19 }

    二分法查找

     1 public class TestBinarySearch {
     2     public static void main(String[] args) {
     3         //System.out.println(args[1]);
     4         int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340} ;   
     5         int searchWord = 6780;  //所要查找的数
     6         int searchCount = 0;  //循环的次数
     7         System.out.printf("普通循环查找%d的次数是%d",searchWord,genetalLoop(arr,searchWord));
     8         System.out.printf("二分法查找%d的次数是%d",searchWord,binarySearch(arr,searchWord));
     9     }
    10     static int genetalLoop(int[] arr,int searchWord){
    11         //普通的循环法,最少需要比较一次,比如查找1,最多需要比较15次,比如8721
    12         int searchCount = 0;
    13         for(int i=0;i<arr.length;i++){ 
    14             searchCount++; 
    15             if (searchWord==arr[i]) 
    16                 break; 
    17         } 
    18         return searchCount; 
    19     }
    20     //int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340};
    21     static int binarySearch(int[] arr,int searchWord){
    22         Arrays.sort(arr);  //先对传进来的数组进行排序
    23         System.out.println("
    "+Arrays.toString(arr));
    24         //二分法查找 
    25         int iIndex=0; //相当于指针的东西 
    26         int iStart=0;  
    27         int iEnd=arr.length-1; 
    28         int searchCount = 0;
    29         for(int i=0;i<arr.length/2;i++) { 
    30             searchCount++; 
    31             iIndex = (iStart+iEnd)/2; 
    32             if(arr[iIndex]<searchWord){ 
    33                 System.out.println("aa");
    34                 iStart = iIndex; 
    35             }else if(arr[iIndex]>searchWord){
    36                 System.out.println("bb");
    37                 iEnd = iIndex; 
    38             }else{ 
    39                 break; 
    40             } 
    41         } 
    42         return searchCount; 
    43     }
    44 }
  • 相关阅读:
    jq原创幻灯片插件slideV1.0
    jq原创弹出层折叠效果
    jq实现鼠标经过图片翻滚效果
    开源代码的来源
    名词解析
    Joomla软件的简单介绍
    Java集合类的使用
    笔记
    MySQL基础篇一
    MySQL基础篇一
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/9891290.html
Copyright © 2011-2022 走看看