黑马程序员——C语言——C语言中的几种编程思想

时间:2022-12-22 00:24:29

--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;