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\n");
printf("升序排列后:\n");
px(nums,10,1);
printf("|---正数为:");
showNums(nums,10,1);
printf("|---负数为:");
showNums(nums,10,0);
//--------------------------------
printf("降序排列后:\n");
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;ilen;i++)
if((tnums[i]0)||(!tnums[i]0))
printf("%d ",nums[i]);
printf("\n");
}
void px(int nums[],int len,int t)//t=1升序,t=0降序
{
int i,j,k,m;
for(i=0;ilen-1;i++)
{
m=nums[i],k=i;
for(j=i+1;jlen;j++)
if((tmnums[j])||(!tmnums[j])) m=nums[j],k=j;
m=nums[i],nums[i]=nums[k],nums[k]=m;
}
}
C语言如何输入十个数,按从大到小顺序排列!代码如图所示:
#includestdio.h
int main()
{
int i,j,a[10],t;
printf("请输入十个数:");
for (i = 0; i10; i++)
scanf("%d",a[i]);
for (i = 0; i10; i++)
【c语言对10个数排序函数 c语言对十个数排序】{
for (j = i + 1; j10;j++) //循环
if (a[i]a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("从大到小排序后:");
for (i = 0; i10; i++)
printf("%2d", a[i]);
return 0;
}
扩展资料
C语言顺序排列题的其他解法
#include stdio.h
int main()
{
int a[10];
int i,j;
int temp;
printf("请输入10个整数:");
for(i=0;i10;i++)
{
scanf("%d",a[i]);
}
for(i=0;i9;i++)
{
for(j=0;j9-i;j++)
{
if(a[j]a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列后顺序为:");
for(i=0;i10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
参考资料:百度百科-c语言
用C语言编写一个快速排序算法 输入10个数1、“快速排序法”使用的是递归原理 , 下面一个例子来说明“快速排序法”的原理 。首先给出一个数组{53,12,98,63,18,72,80,46,32,21} , 先找到第一个数--53,把它作为中间值,也就是说,要把53放在一个位置 , 使得它左边的值比它小 , 右边的值比它大 。{21,12,32,46,18,53 , 80,72,63,98},这样一个数组的排序就变成了两个小数组的排序--53左边的数组和53右边的数组,而这两个数组继续用同样的方式继续下去,一直到顺序完全正确 。一般来说,冒泡法是程序员最先接触的排序方法,它的优点是原理简单,编程实现容易,但它的缺点就是速度太慢 。
2、快速排序代码:
#includestdio.h
void quicksort(int a[],int left,int right)
{
int i,j,temp;
i=left;
j=right;
temp=a[left];
if(leftright)
return;
while(i!=j)
{
while(a[j]=tempji)
推荐阅读
- sap备份方案,sap client copy
- net有另一个程序正在运行,显示另一个程序正在使用此文件,进程无法访问
- sap无法下载模版,sap2000安装失败
- 抖音直播间快捷举报,抖音直播间快捷举报怎么弄
- c语言中使用函数的优缺点 c语言中使用函数的好处
- 如何做一个html5页面,做一个简单的html页面
- 怎么把excel两个窗口分开,怎么把excel两个窗口分开显示
- linux命令错了怎么改 linux修改文件的命令
- 鸿蒙系统有超级权限吗,鸿蒙系统淘宝相册权限