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

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;

}

3、对编好的程序进行测试,得出测试结果:

int main()

{

int TestData[5] = {34,15,6,89,67};

int i = 0;

printf("排序之前的结果\n");

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

printf("|%d|",TestData[i]);

int retData = SelectSort(TestData,5);

printf("排序之后的结果:\n");

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

printf("|%d|",TestData[i]);

return 0;

}

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

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

字符串数组排序(C语言)(qsort库函数)

声明一个字符串指针数组存放每个字符串的首地址,调用库函数qusort按题目要求对字符串指针排序,不移动源字符串。关键是要设计一个好的比较函数,精巧地解决“按长度、长度相等时按大小”排序的问题。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#define N 10 //字符串个数

#define LN 21 //限制字符串长度为20

int mycmp(const void *a,const void *b){//比较函数

char *pa=*(char **)a,*pb=*(char **)b;

int x=int(strlen(pa)-strlen(pb));//依长度比较

return x ? x : strcmp(pa,pb);//长度相等时依大小比较

}

int main(void){

int i=0,j=0;

char *f[N],w[LN*N];//声明指针数组f和字符串总空间

printf("Input %d string(s)(length=%d)...\n",N,LN);

while(iN){//输入并将字符串首址赋给f[i]

if(scanf(" %[1234567890]",f[i]=w+j)0  strlen(f[i])LN)

i++,j+=LN;

else printf("Error, redo: Required length less than %d:",LN);

}

qsort(f,N,sizeof(char *),mycmp);//调用库函数对字符串指针排序

for(i=0;iN;printf("%s\n",f[i++]));//输出...

return 0;

}

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

#includestdio.h

void sortP(int p[])

{

int i,k;

int *fir; // 首位数的指针 

int *cur; // 当前数的指针 

int *max; // 最大数的指针 

int tmp; // 交换数字的临时变量 

fir=p;

for (i=0;i9;i++) // 10个数字,从 0 -- 9 

{

max=fir; // 最大值默认为第一个 

cur=fir+1; // 从第二个数字开始比较 

for (k=i;k10;k++) // 一直到最后一个 

{

if(*cur*max) max=cur; // 把最大数值的指针保存到 max 指针 

cur++; // 下一个数字 

}

tmp=*fir; // 把最大数字和首位的数字交换, 

*fir=*max;

*max=tmp;

fir++; // 比较下一个数字 

}

}

int main(void)

{

int a[10],*p;

int i;

p=a; // 把指针指向数组首位 

printf("请输入10个整数: ");

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

{

scanf("%d",p);

p++;

}

printf("\n\n排序后的10个数字是:\n");

p=a; // 重新把指针指向数组首位 

sortP(p);

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

{

printf("%d  ",*p);

p++;

}

printf("\n");  

return 0;

}

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;

}


分享名称:c语言如何调用排序库函数 C语言中的排序函数
网站地址:http://myzitong.com/article/docecce.html