黑马程序员技术交流社区

标题: 求算法? [打印本页]

作者: 马清泽    时间: 2012-12-6 09:32
标题: 求算法?
本帖最后由 马清泽 于 2012-12-6 11:19 编辑

算法有很多?你如递归等?这个具体是什么原理?怎么应用?
作者: 孙万利    时间: 2012-12-6 09:44
递归算法:递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维(简单的说就是自己调用自己;)

下面代码是一段实例(看红色字段即是递归算法)

package com.itheima;
import java.io.File;
public class ShowDir {
/**
  * @param args
  */
public static void main(String[] args) {
  File dir = new File("d:\\jdk1.6.0_37");
  show_Dir(dir,0);
}

public static String getLevel(int level)
{
  StringBuilder sb = new StringBuilder();
  sb.append("|--");
  for(int x=0;x<level;x++)
  {
   sb.insert(0, "   ");
  }
  return sb.toString();
}

public static void show_Dir(File dir,int level)
{  
  System.out.println(getLevel(level)+dir.getName());
  level++;
  File[] files = dir.listFiles();
  for(int x=0;x<files.length;x++)
  {
   if(files[x].isDirectory())
   {
    show_Dir(files[x],level);
   }else{
    System.out.println(getLevel(level)+files[x]);
   }
  }
  
}
}

作者: 胡高德    时间: 2012-12-6 10:54
/*
        冒泡排序
               
                相邻元素进行比较,最值出现在右边。
*/
class Demo2
{
        //冒泡排序
        public static void bubbleSort(int[] arr){
               
                for(int k=0;k<arr.length-1;k++){ //控制比较多少轮
                       
                        for(int i=0;i<arr.length-1-k;i++){ //为什么减1,因为i位置元素与i+1位置元素比较
                                                           //-k操作是为了将右边比较后出现的最值刨掉,
                                                                                           //也就是最右边出现的最值,不在比较
                                if(arr[i]>arr[i+1]){
                                       
                                        int tmp=arr[i];
                                        arr[i]=arr[i+1];
                                        arr[i+1]=tmp;
                                }
                        }                
                }
        }

        public static void showArray(int[] arr){
       
                System.out.print("[");
                for(int i=0;i<arr.length;i++){
                        if(i==arr.length-1){
                               
                                System.out.print(arr[i]);
                        }else{
                                System.out.print(arr[i]+",");
                        }
                }
                System.out.println("]");
        }


        public static void main(String[] args)
        {
                int[] arr={1,5,2,8,6,7};
               
                showArray(arr);

                bubbleSort(arr);
               
                showArray(arr);
作者: 赵保磊    时间: 2012-12-6 11:33
递归就是在本函数内调用本函数:  下面是运用递归计算 n+(n-1)+(n-2)+......1的一个程序
在主函数中调用该静态方法,传进一个参数即可.
public  static int addSum(int num)
{
    if(num==1)
             return  1;
     else
            return  num+addSum(num-1);
      
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2