--android培训、java培训、ios学习型技术博客、期待与您交流!---------
一个函数在它的函数体内调用它自身称为递归调用,其中主调函数又是被调函数。在递归函数中应存在能让递归函数结束的条件。
构成递归的条件:存在自己调用自己、存在一个条件让递归结束。
递归函数很耗内存,在C语言程序设计中一般很少运到。
递归函数应用举例:N!
int jiecheng(int n )
{
int j;
if(n==1)
{ji=1;}
else
{ ji=jiecheng(n-1)*n;}
return ji;
}
冒泡排序
冒泡排序是一种简单的排序算法,它重复的走访过排序的数列,一次比较两个元素,如果他们的排序错误就把他们交换过来,走访的过程是重复的进行直到没有再需要交换,也就是说该序列已经排序完成。
冒泡排序分为:大数下沉 小数上浮
冒泡排序的步骤(大数下沉)
1) 比较相邻的元素,如果第一个比第二个大就交换他们两个。
2)对每一组相邻元素做同样的工作,从开始的第一对到结尾的最后一对。在这一点,最后的元素应该是最大的数。
3)针对所有的元素做以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
eg:
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
(外层循环加里层循环)
选择排序
选择排序是一种简单直观的排序算法。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余为排序元素中继续寻找最小元素,然后放到未排序序列起始位置,以此类推,直到所有元素均排序完毕。
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
折半查找思想
基本思路:在有序表中,取中间元素做作为比较对象,若给定值与中间元素要查找的数相等,则查找成功;若给定值小于中间元素要查找的数,则在中间元素的左半区继续查找;若给定值大于中间元素要查找的数,则在中间元素右半区继续查找。不断重复上述查找的过程,直到查找成功,或所查找的区域无数据元素,查找失败。
实现条件:一组有序的数据
实现步骤:
循环
计算a[mid]的位置 mid = ( low + high )/2
判断key>?<a[mid]
key>a[mid] low = mid + 1;
key<a[mid] high = mid -1;
key==a[mid]; return mid;
如果查找不到 return -1;