排序函数c语言
⑴ c语言,用选择法对10个数排序,按正负数分开输出
选择排序:大循环i依次取元素和后面所有元素比较,找出其中最值,和当前i的元素交换。一次大循环交换一次。
程序思路:
一、排序函数:根据传参,实现降序升序两种功能。
二、数组输出:根据传参,实现正数和负数输出两种功能。
下面是代码:
#include <stdio.h>
void px(int nums[],int len,int t);//排序
void showNums(int nums[],int len,int t);//输出
int main()
{
int nums[10]={8,7,-1,2,-5,4,9,-3,-6,1};
printf("原数组:8,7,-1,2,-5,4,9,-3,-6,1 ");
printf("升序排列后: ");
px(nums,10,1);
printf("|---正数为:");
showNums(nums,10,1);
printf("|---负数为:");
showNums(nums,10,0);
//--------------------------------
printf("降序排列后: ");
px(nums,10,0);
printf("|---正数为:");
showNums(nums,10,1);
printf("|---负数为:");
showNums(nums,10,0);
}
void showNums(int nums[],int len,int t)//t=1输出正数,t=0输出负数
{
int i;
for(i=0;i<len;i++)
if((t && nums[i]>0)||(!t && nums[i]<0))
printf("%d ",nums[i]);
printf(" ");
}
void px(int nums[],int len,int t)//t=1升序,t=0降序
{
int i,j,k,m;
for(i=0;i<len-1;i++)
{
m=nums[i],k=i;
for(j=i+1;j<len;j++)
if((t && m>nums[j])||(!t && m<nums[j])) m=nums[j],k=j;
m=nums[i],nums[i]=nums[k],nums[k]=m;
}
}
⑵ 如何用函数实现三个数的排序(用的是C语言)
一:全局变量
#include<stdio.h>
inta,b,c;//定义三个全局变量
voidsort()//不需要参数
{
intt;
if(a>b)
{
t=a;a=b;b=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
if(a>b)
{
t=a;a=b;b=t;
}
}
intmain()
{
printf("输入:");
scanf("%d%d%d",&a,&b,&c);
sort();
printf("排序:%d<%d<%d ",a,b,c);
return0;
}