zoukankan      html  css  js  c++  java
  • 冒泡排序及递归

    1,冒泡排序

       原理

       目的:按从小到大排序。 

       方法: 

      假设存在数组:10, 8, 3, 5, 6, 7, 9

      第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。 

      以此类推,第一轮比较之后的结果是:3, 10, 8, 5, 6, 7, 9

      经过第一轮比较,最小的元素跑到了第一个,所以第二轮比较,第一个元素不需要进行比较了。  

      第二轮还是从索引i=1和j=2开始比较 ,第三轮、第四轮以此类推。

      排序之后的结果:3, 5, 6, 7, 8, 9, 10 

     代码

     public static void Main(string[] args)
            {
                int[] arrsort = new int[] { 10, 8, 3, 5, 6, 7, 9 };
                int temp = 0;
                for (int i = 0; i < arrsort.Length; i++)
                {
                    for (int j = i + 1; j < arrsort.Length; j++)
                    {
                        if (arrsort[i] > arrsort[j])
                        {
                            temp = arrsort[i];
                            arrsort[i] = arrsort[j];
                            arrsort[j] = temp;
                        }
                    }               
                }
                foreach (var item in arrsort)
                {
                    Console.Write(string.Format("{0} ", item));
                }
                Console.WriteLine();
                Console.ReadKey();
            }              

     2,递归

    什么是递归函数/方法?

    任何一个方法既可以调用其他方法又可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或者递归方法! 

    通常递归有两个特点:    

    1.递归方法一直会调用自己直到某些条件满足,也就是说一定要有出口;

    2.递归方法会有一些参数,而它会把这些新的参数值传递给自己;(自己调自己);

    递归通常用于:  ①.阶乘  ②.斐波拉切数列;

    1.阶乘

    阶乘(!)是小于某个数的所有正整数的乘积;

    注意:0既不是正整数,又不是负整数;0是整数;

    0!=1

    1!=1

    2!=2*1!=2

    3!=3*2!=6

    4!=4*3!=24

    5!=5*4!=120

    ...

    n!=n*(n-1)!

    // 递归方法:

    pubic long Factorial(int n){ 
      if(n==0){ 
      return 1; 
      return n*Factorial(n-1); 
       } 
     }

    你知道的,n的阶乘实际上就是n-1的阶乘乘以n,且n>0;

    它可以表示成Factorial(n)=Factorial(n-1)*n;

    这是方法的返回值,但我们需要一个条件,也就是出口(注意:递归一定要有出口)

    如果n=0则返回1;

    2.(Fibonacci)斐波拉切数列:

    Fibonacci数列是按以下顺序排列的数字:

    1,1,2,3,5,8,13,21,34,55....

    我们不难发现数列的排列规律是:后一个数加上前一个数,以此类推;

    如果F0=0并且F1=1那么Fn=F(n-1)+F(n-2);

    public long Fabinacci(int n){
      if(n==0||n==1){  //  满足条件 
      return n;   
       } 
      return Fabinacci(i-1)+Fabinacci(i-2);  //  返回值 
     }

     

  • 相关阅读:
    二分查找思路以及可能出现情况对应解决办法
    多线程知识点大纲
    服务器consul启动方法
    大白话带你认识 ZooKeeper !重要概念一网打尽!
    「Netty实战 02」手把手教你实现自己的第一个 Netty 应用!新手也能搞懂!
    从 BIO、NIO 聊到 Netty,最后还要实现个 RPC 框架!
    什么是P问题、NP问题和NPC问题
    期刊汇总
    Typora 使用
    TCA 复习
  • 原文地址:https://www.cnblogs.com/lcidy/p/9015116.html
Copyright © 2011-2022 走看看