冒泡排序及递归

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);  //  返回值 
 }

 

posted on 2018-05-09 16:38  沫丶灬沫  阅读(411)  评论(0编辑  收藏  举报