网站首页 > 文章中心 > 其它

c语言的算法用什么函数

作者:小编 更新时间:2023-10-07 10:47:38 浏览量:126人看过

用C语言编写函数,要实现快速排序算法或者冒泡法

冒泡法排序函数如下:

void bubble(int a[],int n)

{int i,j,t;

for(i=0;in-1;i++)/*共进行n-1轮*/

for(j=0;jn-1-i;j++)/*每轮在前n-i个数中比较*/

if(a[j]a[j+1]) /*若相邻元素逆序*/

c语言的算法用什么函数-图1

{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/

}

void sort(int *a, int left, int right)

{

if(left = right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/

return ;

int i = left;

c语言的算法用什么函数-图2

int j = right;

int key = a[left];

while(i j) /*控制在当组内寻找一遍*/

while(i j key = a[j])

/*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升

j--;/*向前寻找*/

a[i] = a[j];

/*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是

a[left],那么就是给key)*/

while(i j key = a[i])

/*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,

因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/

i++;

a[j] = a[i];

a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/

sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/

sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/

/*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/

c语言队列排序要用什么什么算法?

可以调用 系统函数

可以使用 快排 qort 函数 (头文件stdlib,h里面),

只需要自己编写 比较函数

可以百度一下用法 , 很详细的!

当然可以自己写 排序函数 快排 堆排序 .... 冒泡 和选择的 效率就很低了

C语言中sin()函数用的什么算法?

C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果

下面用for循环实现sin的算法,程序代码如下:

#includestdio.h

#includemath.h

void main()

int i;

float x,sum,a,b; //sum代表和,a为分子,b为分母

char s;

printf("please input x");

scanf("%f",x);

s=1;

sum=0;

a=x; //分母赋初值

b=1; //分子赋初值

sum=sum+s*a/b; //累加一项

a=a*x*x; //求下一项分子

s*=-1;

printf("sum=%f\n",sum);

怎样用C语言编写数学公式

①.、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h.

函数名及解释:

int abs(int i) 返回整型参数i的绝对值

double cabs(struct complex znum) 返回复数znum的绝对值

double fabs(double x) 返回双精度参数x的绝对值

long labs(long n) 返回长整型参数n的绝对值

double exp(double x) 返回指数函数ex的值

double log(double x) 返回logex的值

double log10(double x) 返回log10x的值

double pow(double x,double y) 返回xy的值

double pow10(int p) 返回10p的值

double sqrt(double x) 返回+√x的值

double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度

double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度

double atan(double x) 返回x的反正切tan-1(x)值,x为弧度

double cos(double x) 返回x的余弦cos(x)值,x为弧度

double sin(double x) 返回x的正弦sin(x)值,x为弧度

double tan(double x) 返回x的正切tan(x)值,x为弧度

double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度

double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度

例如:

double?T,V;

return?V;

C语言用以下函数构造LRU算法,求大侠帮助

#include stdio.h

#include conio.h

#include stdlib.h

struct LRUQueue //定义一个特殊的队列

int number;

int data[MAINMEM];

}lru;

void Init(); //初始化操作

void Add(int pageID); //加入队列

int Find(int pageID); //查找页面是否在主存中

void Update(int pos); //更新页所在的地址

void PrintQueue(); //输出主存内容

int main()

int i;

int queuelength;

int queue[QUEUEMAXLEN];

Init(); //初始化操作

printf("请输入队列的长度:");

scanf("%d",queuelength);

printf("请以此输入队列的页号:");

for(i=0;iqueuelength;i++)

scanf("%d",queue[i]);

Add(queue[i]);

PrintQueue();

system("pause");

return 0;

void Init()

lru.number = 0;

for(i = 0;iMAINMEM;i++)

lru.data[i] = -1;

int Find(int pageID)

for (i=0;iMAINMEM;i++)

if(lru.data[i] == pageID)

return i;

void Update(int pos)

int tmp = lru.data[pos];

for(i = pos;ilru.number;++i)

lru.data[i] = lru.data[i+1];

lru.data[lru.number-1] = tmp; //将被访问的页放在最后一位,其他的页前移,因为置换时删掉的是主存中第一块放置的页面

void PrintQueue()

printf("当前内存中的页号:\n");

putch('|');

if(lru.data[i] == -1)

printf(" |");

else

printf("%d |",lru.data[i]);

putch('\n');

void Add(int pageID)

printf("当前访问的页面:%d\n",pageID);

if(lru.numberMAINMEM) //如果主存没有填满

int pos = Find(pageID);

if(pos)

Update(pos);

lru.data[lru.number++]=pageID;

for(i=0;iMAINMEM-1;i++)

lru.data[i]=lru.data[i+1]; //数据左移一个单位

lru.data[i]=pageID; //加入新数据

C语言的compare函数是在哪里定义的?算法是什么?

只有字符数组有库函数strcmp函数,格式如下:

int

strcmp(const

char

*str1,

const

如果左边小于右边的字符串,函数返回-1

如果左边字符串等于右边字符串,函数返回0

如果左边字符串大于右边字符串,函数返回1

一般基本数据类型的比较都可以用关系运算符,如果自定义的可以重载运算符或者使用函数对象,如果用C语言的方式,自定义一个比较函数就OK了,库函数中没有这种普适类型的比较函数

以上就是土嘎嘎小编为大家整理的c语言的算法用什么函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章