当前位置:首页 » 编程语言 » c语言如何调用排序库函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言如何调用排序库函数

发布时间: 2022-06-26 15:55:33

A. c语言怎样通过函数调用实现选择排序法

c语言通过函数调用实现选择排序法:

1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);

2、写两个循环,在循环中应用简单选择插入排序:

int SelectSort(int * ListData,int ListLength)

{

int i , j ;

int length = ListLength;

for(i=0;i<=length-2;i++)

{

int k = i;

for(j=i+1;j<=length-1;j++)

{

if(ListData[k]>ListData[j])

{

k=j;

}

}

if(k!=i)

{

int tmp = ListData[i];

ListData[i] = ListData[k];

ListData[k] = tmp;

}

}


return 0;

}

4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。

B. C语言中通过函数调用对一维数组进行排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXlen 100
void select_sort(int *x, int n) { //选择排序
int i, j, min;
int t;
for (i = 0; i < n - 1; i++) { // 要选择的次数:0~n-2共n-1次
min = i; // 假设当前下标为i的数最小,比较后再调整
for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个
if (*(x + j) < *(x + min)) {
min = j; // 如果后面的数比前面的小,则记下它的下标
}
}
if (min != i) { // 如果min在循环中改变了,就需要交换数据
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i < MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}

C. C语言编写一个函数排序调用

#include<stdio.h>
voidsortP(intp[])
{
inti,k;
int*fir; //首位数的指针
int*cur; //当前数的指针
int*max; //最大数的指针
inttmp; //交换数字的临时变量

fir=p;
for(i=0;i<9;i++) //10个数字,从0--9
{
max=fir; //最大值默认为第一个
cur=fir+1; //从第二个数字开始比较
for(k=i;k<10;k++) //一直到最后一个
{
if(*cur>*max)max=cur; //把最大数值的指针保存到max指针
cur++; //下一个数字
}
tmp=*fir; //把最大数字和首位的数字交换,
*fir=*max;
*max=tmp;
fir++; //比较下一个数字
}
}
intmain(void)
{
inta[10],*p;
inti;
p=a; //把指针指向数组首位
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",p);
p++;
}
printf(" 排序后的10个数字是: ");
p=a; //重新把指针指向数组首位
sortP(p);
for(i=0;i<10;i++)
{
printf("%d",*p);
p++;
}
printf(" ");
return0;
}

D. 谁能告诉我c语言的排序算法函数库,及其用法啊

一般的排序算法都是采用循环,比如将要排列的值赋给一个数组,再定义一个临时变量。
采用循环,比如For循环对数组a(10)的升序排列,从数组第一个数开始和第二个数比较,如果第一个数比第二个数大,那么将第一个数赋给临时变量,第二个数给数组第一个变量,再将临时变量值给第二个数。接下来比较第2个和第3个。。。。。。。
dim i, x
for i = 1 to 9
if a(i)>a(i+1) then
x=a(i)
a(i)=a(I+1)
a(i+1)=x
end if
next i
上面是VB的语句,C的我忘记怎么写了,反正思路就是这样了。你应该能看懂。

E. C语言:输入5个数,用调用函数的方法,从小到大排序 用简单点的

#include<stdio.h>

voidsort(float*a,intn)

{

inti,j,tmp;

for(i=0;i<n-1;i++)

for(j=0;j<n-i-1;j++)

if(a[j]>a[j+1])

{

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

voidmain()

{

floata[5];

inti;

printf("请输入五个数(逗号隔开):");

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

sort(a,5);

printf("排序后为:");

for(i=0;i<5;i++)

printf("%.2f",a[i]);

printf(" ");

}

或者三个数的。

void sort(int *a, int *b, int *c)

{

int tmp;

if(*a>*b){

tmp = *b;

*b = *a;

*a = tmp;

}

if(*a>*c){

tmp = *c;

*c = *a;

*a = tmp;

}

if(*b>*c){

tmp = *c;

*c = *b;

*b = tmp;

}

return;

}

(5)c语言如何调用排序库函数扩展阅读:

C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。

一、可以编写自己的sort函数。
如下函数为将整型数组从小到大排序。void sort(int *a, int l)//a为数组地址,l为数组长度。

{

int i, j;

int v; //排序主体

for(i = 0; i < l - 1; i ++)

for(j = i+1; j < l; j ++)

{

if(a[i] > a[j])//如前面的比后面的大,则交换。

{

v = a[i];

a[i] = a[j];

a[j] = v;

}

}

}

对于这样的自定义sort函数,可以按照定义的规范来调用。

二、C语言有自有的qsort函数。
功 能: 使用快速排序例程进行排序。头文件:stdlib.h
原型:

void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

参数:

1、待排序数组首地址。

2、数组中待排序元素数量。

3、各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序,这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。

F. C语言如何才能调用这个函数排序的数组

#include #include #include #define MAXlen 100 void select_sort(int *x, int n) { //选择排序 int i, j, min; int t; for (i = 0; i < n - 1; i++) { // 要选择的次数:0~n-2共n-1次 min = i; // 假设当前下标为i的数最小,比较后再调整 for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个 if (*(x + j) < *(x + min)) { min = j; // 如果后面的数比前面的小,则记下它的下标 } } if (min != i) { // 如果min在循环中改变了,就需要交换数据 t = *(x + i); *(x + i) = *(x + min); *(x + min) = t; } } } int main() { int i; int iArr[MAXlen]; srand((unsigned int)time(NULL)); printf("\n排序前:\n"); for(i = 0 ; i < MAXlen ; i++) { iArr[i] = (unsigned int)rand() % 1000; if(i % 10 == 0) printf("%\n"); printf("%5d",iArr[i]); } printf("\n"); select_sort(iArr,MAXlen); printf("\n排序后:\n"); for(i = 0 ; i < MAXlen ; i++) { if(i % 10 == 0) printf("%\n"); printf("%5d",iArr[i]); } printf("\n\n"); return 0; }

G. C语言快速排序函数怎么调用

你可以看看这个例子:
#include <stdio.h>
#include <stdlib.h>

int list[5] = {7,5,9,2,6};
int sort_function( const void *a, const void *b);

int main(void)
{
int x;
qsort((void *)list, 5, sizeof(int), sort_function);
for (x = 0; x < 5; x++)
printf("%d\\n", list[x]);
return 0;
}

int sort_function( const void *a, const void *b)
{
if(*(int*)a>*(int*)b)
return 1;
else if(*(int*)a<*(int*)b)
return -1;
else
return 0;
}

H. C语言如何用调用函数的方法把5个数字从小到大排序

1、在开头处定义了两个指针变量point_1和point_2。但此时他们并未指向任何一个变量,只是提供两个指针变量,规定他们可以指向整形变量,至于指向哪一个整形变量,要在程序语句中指定。程序第6,7两行的作用就是使point_1指向a,point_2指向b,此时point_1的值为&a(即a的地址),point_2的值为&b。

2、第10行输出*point_1和*point_2的值,其中的“*”表示“指向”。*point_1表示“指针变量point_1所指向的变量”,也就是变量a。*point_2表示“指针变量point_2所指向的变量”,也就是变量b。从运行结果来看他们也就是100和10.

3、程序中有两处出现*point_1和*point_2,但是两者含义不同。程序第5行的*point_1和*point_2表示定义两个指针变量*point_1和*point_2。它们前面的“*”只是表示该变量是指针变量。程序最后10行中的printf函数中的*point_1和*point_2则表示指针变量point_1和point_2所指向的变量。

I. C语言数据结构顺序表选择排序怎么在主函数中调用,谢谢!

SeqList L;//L只是个默认构造,在后面执行基本是统一的0值;执行前应该设置实体数据
L=Selection(L.length);//改为L=Selection(L);原函数调用与函数定义不符,有语法错误;L.length是个int 类型,函数定义的参数类型是SeqList;
SeqList Selection(SeqList L) 内部逻辑不够简捷,多多练习;
if (L.data[j]<L.data [i]){}//可直接交换,k标志没什么作用。