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

c语言排序怎么调用

发布时间: 2022-07-21 09:13:55

1. 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;
}

2. 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。

3. C语言,二路归并排序,递归调用到底是怎么调用的求详解!

程序代码都是顺序执行的,当然是把一路调用完再做第二路调用,最后把排好序的2路进行合并;

在排序每一路的时候也是使用归并的方式,把一路分成2路,层层深入。

理解的话,你可以这样:

比如8个数,你从上到下竖着排成一列,然后中间一条横线分割。

横线上面的部分再从中间分割成2部分,2部分放在第二列;

依次往后分割。得到形如这样的图:

然后按照红色箭头先按A反推一层,再按B向下一层,这样就会合并一次产生排好序的前一层。如此反复,这就是递归实际的执行流程。

4. 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; }

5. 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;
}

6. c语言怎样实现快速排序

include<stdio.h>

int arr_num[];
int length;

void quick_sort(int left, int right)
{
int i, j, c, temp;
if(left>right)
return;

i= left;
j= right;
temp = arr_num[i]

while(i != j)
{
while(arr_num[j]>=temp && i<j)
{
j--;
}

while(arr_num[i]<=temp && i<j)
{
i++;
}

if(i<j)
{
c = arr_num[i];
arr_num[i] = arr_num[j];
arr_num[j] = c;
}
}

//left为起始值(参照值)此时的I为第一次排序结束的最后值,与参照值交换位置
arr_num[left] = arr_num[i];
arr_num[i] = temp;

//继续递归直到排序完成
quick_sort(left, i-1);
quick_sort(i+1, right);
}

int main()
{
int i;
length = 7;
arr_num[length] = {23, 7, 17, 36, 3, 61, 49}

//快速排序调用
quick_sort(0, length-1);

//输出排序后的结果
for(i=1;i<=length;i++)
printf("%d ",arr_num[i]);
getchar();getchar();
return 0;
}

7. C语言如何把已经录入的学生各科成绩的总成绩计算出并调用去排序

要看你数据类型,用冒泡排序思路循环比较总分,交换对应各科成绩:
一、比如,一个学生的各科成绩用数组保存,那么,n个学生就是二维数组。总分再定义一个一维数组用行下标将两者对应。冒泡排序时比较总分,需交换时,两个数组分别同时交换(行下标一样)。
二、这种多属性表示一个对象,定义成结构体更好,各科成绩和总分都定义成学生结构体的成员变量,还可根据需求增加姓名年龄等属性。n个学生就是结构数组,排序的时候要用总分这个成员变量来比较,交换直接用结构变量相交换。
三、对第二点升级做法,当学生人数很多且经常增删,且人数不定,那么把结构数组改成结构链表就更方便。排序时,保留结构指针的值,交换其余成员变量。

8. 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所指向的变量。

9. 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标志没什么作用。

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

}

(10)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语言基础类型。