编写一个函数,对10个整数按降序排序。在主函数输入10个数,调用该函数,输出排序后的结果。 170
2个回答
展开全部
代码如下:
一、头文件:
#include <stdio.h>
#define N 10
二、输入函数,获取输入值:
void sort(int a[],int n){ int i, j; int temp = 0; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (a[j] < a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } }}
}
三、选择排序函数:
void select_sort(int *a, int n){ int i, j; int temp, max; for (i = 0; i < n - 1; i++) { max = i; for (j = i + 1; j < n; j++) if (a[max] < a[j]) max = j; if (max != i) { temp = a[max]; a[max] = a[i]; a[i] = temp; } }}
三、主函数,执行。
int main(void){ int a[N], i; for (i = 0; i < N; i++) { scanf("%d", &a[i]); } //sort(a, N); select_sort(a, N); for (i = 0; i < N; i++) { printf("%d,", a[i]); } putchar(10); return 0;}
扩展资料:
C语言排序的3种方法:
1、冒泡法:
思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。
2、选择排序:
从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置。
3、插入排序:
用扑克的方法解释,首先抽到第一张牌,将它放在第一位,排序是从第二次抽牌开始,第二次抽起一张牌3,它比9小,所以将9向后移一。位然后把3放在9原来的位置。再次抽牌2,发现它应该再3的前面,所以将3和9向后移,把2放到3原来的位置... ... 以此类推的思维。
展开全部
#include "stdio.h"
#include "stdlib.h"
void popo(int *m,int size)
{
int i;
int j;
int temp;
for(i=size-2;i>=0;i--)
{//外层循环,每循环一次找到一个最大值
//循环最大的数
for(j=0;j<=i;j++)
{//内层循环,帮忙找到最大值
if(m[j+1]<m[j])
{
temp=m[j];
m[j]=m[j+1];
m[j+1]=temp;
}
}
}
}
main()
{
int i;
int j;
int m[10]={0};
int temp;
for(i = 0;i<10;i++)
{
scanf("%d",m + i);
}
popo(m,10);
for(i=0;i<10;i++)
{
printf("%d,",m[i]);
}
}
#include "stdlib.h"
void popo(int *m,int size)
{
int i;
int j;
int temp;
for(i=size-2;i>=0;i--)
{//外层循环,每循环一次找到一个最大值
//循环最大的数
for(j=0;j<=i;j++)
{//内层循环,帮忙找到最大值
if(m[j+1]<m[j])
{
temp=m[j];
m[j]=m[j+1];
m[j+1]=temp;
}
}
}
}
main()
{
int i;
int j;
int m[10]={0};
int temp;
for(i = 0;i<10;i++)
{
scanf("%d",m + i);
}
popo(m,10);
for(i=0;i<10;i++)
{
printf("%d,",m[i]);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询