正文
用c语言编写一个排序函数 用c语言编写一个排序函数的方法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
如何用C语言编写一个排序程序
楼上用c语言编写一个排序函数的用用c语言编写一个排序函数的是C++
若单纯用c语言编写一个排序函数的用C那就是这样
#includestdio.h
#define
"NO.%d
%d
%d
%d
%d
%3.2f
%3.2f\n",1+i,stu[i].num,stu[i].mat,stu[i].ENG,stu[i].com,stu[i].aver,stu[i].total//宏定义节约时间
struct
student
{
int
num;
int
mat;
int
ENG;
int
com;
float
aver;
float
total;
}stu[10];//定义结构体变量
void
main()
{
int
i;
void
take_turn_print(struct
student
stu1[10])
;
float
sum(int
x,int
y,int
z);//声明求和函数
for(i=0;i10;i++)
scanf("%d%d%d%d",stu[i].num,stu[i].mat,stu[i].ENG,stu[i].com);
for(i=0;i10;i++)
{
stu[i].total=sum(stu[i].mat,stu[i].ENG,stu[i].com);//调用求和函数
stu[i].aver=stu[i].total/3;
}
take_turn_print(stu);//调用排序
打印函数
}
void
take_turn_print(struct
student
stu1[10])
{
void
change(int
*x,int
*y);//声明换位函数
void
change1(float
*x,float
*y);//声明换位函数
int
i,j;
for(j=0;j9;j++)//冒泡排序
为理解简单
就没用别用c语言编写一个排序函数的排序方法
哈哈
{
for(i=0;i9-j;i++)
{
if(stu1[i].averstu1[i+1].aver)
{
change(stu1[i].num,stu1[i+1].num);//
值交换
change(stu1[i].mat,stu1[i+1].mat);//
值交换
change(stu1[i].ENG,stu1[i+1].ENG);//
值交换
change(stu1[i].com,stu1[i+1].com);//
值交换
change1(stu1[i].aver,stu1[i+1].aver);//
值交换
change1(stu1[i].total,stu1[i+1].total);//
值交换
}
}
}
for(i=0;i10;i++)
printf(print);//打印
}
void
change(int
*x,int
*y)
{
int
i;
i=*x;
*x=*y;
*y=i;//利用指针做变量替换
}
void
change1(float
*x,float
*y)
{
float
i;
i=*x;
*x=*y;
*y=i;//利用指针做变量替换
}
float
sum(int
x,int
y,int
z)
{
float
i;
i=(float)(x+y+z);
return(i);
}
前几天也是帮同学做这样的题
一模一样
看来用c语言编写一个排序函数你也是WH大学的
用C语言编写函数,要实现快速排序算法或者冒泡法
冒泡法排序函数如下用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]) /*若相邻元素逆序*/
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/
}
void sort(int *a, int left, int right)
{
if(left = right)/*如果左边索引大于或者等于右边用c语言编写一个排序函数的索引就代表已经整理完成一个组了*/
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i j) /*控制在当组内寻找一遍*/
{
while(i j key = a[j])
/*而寻找结束用c语言编写一个排序函数的条件就是用c语言编写一个排序函数,1用c语言编写一个排序函数,找到一个小于或者大于key的数(大于或小于取决于你想升
序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/
{
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语言编写一个排序函数(对一维数组排序)并在主函数中调用
以下是一个使用C语言编写一维数组排序函数并在主函数中调用的示例代码,采用的是从小到大排序的方式,可以根据需要进行修改:
```c
#include stdio.h
// 排序函数,参数为待排序数组和数组长度
void sort(int arr[], int len) {
int i, j, tmp;
// 冒泡排序
for (i = 0; i len - 1; i++) {
for (j = 0; j len - i - 1; j++) {
if (arr[j] arr[j + 1]) { // 相邻元素比较,如果前面的大于后面的,则交换位置
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main() {
int arr[] = { 3, 1, 5, 7, 2, 4, 6 };
int len = sizeof(arr) / sizeof(int);
int i;
// 输出排序前的数组
printf("排序前:
");
for (i = 0; i len; i++) {
printf("%d ", arr[i]);
}
printf("
");
// 调用排序函数进行排序
sort(arr, len);
// 输出排序后的数组
printf("排序后:
");
for (i = 0; i len; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
```
在上面的代码中,我们定义了一个`sort`函数,实现了一维数组排序,并接受待排序数组和数组长度为参数。排序的算法采用的是冒泡排序,每次比较相邻元素的大小并交换它们的位置,直到排序完成。
在主函数中,我们声明了一个待排序的一维数组`arr`,并计算了数组长度。然后,我们输出了排序前的数组,并调用`sort`函数进行排序。最后,我们输出排序后的数组。
需要注意的是,排序函数的实现方式可以有多种,根据实际需求和数据类型的不同,选择合适的排序算法可以提高排序的效率和准确性。在调用排序函数时,需要确保输入的参数正确和合法,避免出现数组越界等错误。
关于用c语言编写一个排序函数和用c语言编写一个排序函数的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。