C语言函数排序 c语言排序法

c语言运用sort 排序函数,需要的头文件是什么?

sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义。

成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元河西做网站,已为上家服务,为河西各地企业和个人服务,联系电话:18980820575

sort 函数为将整型数组从小到大排序。

voidsort(int*a,intl)//a为数组地址,l为数组长度。

{

inti,j;

intv;

//排序主体

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

for(j=i+1;jl;j++)

{

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

{

v=a[i];

a[i]=a[j];

a[j]=v;

}

}}

扩展资料

c语言自有的qsort函数

#includestdio.h

#includestdlib.h

intcomp(constvoid*a,constvoid*b)//用来做比较的函数。

{

return*(int*)a-*(int*)b;

}

intmain()

{

inta[10]={2,4,1,5,5,3,7,4,1,5};//乱序的数组。

inti;

qsort(a,n,sizeof(int),comp);//调用qsort排序

for(i=0;i10;i++)//输出排序后的数组

{

printf("%d\t",array[i]);

}

return0;

}

c语言 排序函数

首先这是一种快速排序的算法,你也应该知道,快速排序就是选择序列中的一个元素作为基准,通过循环找到这个基准最终的位置,并把所有小于这个基准的元素移到这个位置的左边,大于基本的元素移到右边,这样再对这个基准的左右两边分别递归调用自己,最终就能得到排序的结果。

再来解释一下这个例子,它选择的基准就是v[(left+right)/2],然后将这个基准雨v[left]交换,现在假设你想从头排序到最后,则你会将left传个0,也就是他将这个基准和V[0]交换了,这个时候开始循环,因为第一个元素是基准,所以从第二个元素开始循环(也就是left+1),然后到if判断部分,如果v[i]v[left],也就是说这个时候已经至少有一个元素比基准小了,所以基准至少在v[1]或者之后了,所以他把你找到的这个比基准小的v[i]和v[++last]交换,这时候v[i]的位置已经是在基准的正确位置或者之前了,不会在基准之后的,所以这就实现了把比基准小的元素移到基准的正确位置之前,你说的【第一遍执行过程中,第8行last=left=0,那么到了11行时相当于交换v[1]和v[0+1]】这没有错,确实是在自己交换自己,但是这样并不违背前面的思路不是么?当if条件不满足的时候,last是不会增加的,但是i会一直加1,所以last和i就会不同,这只是在将比基准小的元素移到基准之前,每有一个比基准小的,last就加1,这样当你循环一遍之后的last值就是基准应该在的位置,而且这个时候,所有比基本小的元素也都在last之前了,这时候last位置的元素也是比基准小的,这没关系,因为之后还有一句swap[v,last,left],到目前位置,基准的位置找到了,基准左边的元素都比基准小,右边都比基准大,再对基准的左右两边递归调用自己,就完成了序列的排序。

c语言怎么用自定义函数排序

#include stdio.h

#include string.h#define NUM 3

struct student

{

char name[20]; /*姓名*/

long num; /*12位学号*/

double sum; /*总分*/

};

void Create_Students(struct student stu[NUM])

{

struct student *p;

printf("请输入学生姓名 学号(12位) 总分:\n");

for( p = stu; p stu+NUM; p++)

{

scanf("%s %d %lf",p-name,p-num,p-sum); }

}

void Order_Students(struct student stu[NUM])//起泡法

{

int i,j;

struct student temp;

for(i=NUM-1;i=0;i--)

for(j=0;ji;j++)

if(stu[j].sumstu[j+1].sum)

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1]=temp;

}

}

void main()

{

int i=1;

struct student *p;

struct student stu[NUM];

Create_Students(stu);

Order_Students(stu);

printf("%-20s %-13s %-6s %4s\n","姓名","学号(12位)","总成绩","名次");

for(p=stu;pstu+NUM;p++,i++)

{

printf("%-20s %-13.0d %-8.2f %2d\n",p-name,p-num,p-sum,i);

}

}//你参考参考,嘿

c语言,使用函数的选择法排序

void selectionsort(int a[],int m)

{

int i,j;

int k;

int tmp;

for(i = 0; i  m-1; i++)//控制循环次数,n个数需要n-1次循环

{

k = i;

for(j = i+1; j  m ; j++)

{

if(a[j]  a[k])

k = j;

}

//i不等于k是就证明a[i]不是最小的,

//i等于k时证明a[i]就是本轮比较过程中最小的值

if(i != k)

{

tmp = a[i];

a[i] = a[k];

a[k] = tmp;

}

}

}


网站标题:C语言函数排序 c语言排序法
分享URL:http://pwwzsj.com/article/ddjhohp.html