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