Ⅰ 如何用c语言将一组数进行降序排列
假设有n个数。
#include<stdio.h>
void min(int *a,int *b)
{
int data;
if(*a<*b)
{
data=*a;
*a=*b;
*b=data;
}
}
int main()
{
int t[10];//假设n=10,可以设置为其他数
int i,j,n=10;
for(i=0;i<n;i++)
scanf("%d",&t[i]);
for(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
{
min(&t[j],&t[j+1]);
}
}
for(i=0;i<n;i++)
printf("%3d",t[i]);
printf("\n");
return 0;
}
Ⅱ c语言中排序方法
1、冒泡排序(最常用)
冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。(注意每一轮都是从a[0]开始比较的)
以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
2、鸡尾酒排序
鸡尾酒排序又称双向冒泡排序、鸡尾酒搅拌排序、搅拌排序、涟漪排序、来回排序或快乐小时排序, 是冒泡排序的一种变形。该算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
原理:数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。
3、选择排序
思路是设有10个元素a[1]-a[10],将a[1]与a[2]-a[10]比较,若a[1]比a[2]-a[10]都小,则不进行交换。若a[2]-a[10]中有一个以上比a[1]小,则将其中最大的一个与a[1]交换,此时a[1]就存放了10个数中最小的一个。同理,第二轮拿a[2]与a[3]-a[10]比较,a[2]存放a[2]-a[10]中最小的数,以此类推。
4、插入排序
插入排序是在一个已经有序的小序列的基础上,一次插入一个元素*
一般来说,插入排序都采用in-place在数组上实现。
具体算法描述如下:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
Ⅲ c语言对从键盘输入的十个整数进行降序排序,排序后输出第二大的数,编写fun函数
排序有挺多方法的,例如:冒泡排序法、选择排序法
以下使用选择排序
#include<stdio.h>
voidfun(inta[],intn)
{
inti,j,k,tmp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;++j)
if(a[j]>a[k])k=j;
if(k!=i)
{
tmp=a[k];a[k]=a[i];a[i]=tmp;
}
}
}
intmain()
{
inta[10];
inti;
for(i=0;i<10;i++)scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)printf("%d ",a[i]);
printf("第二大的数是:%d",a[1]);
return0;
}
Ⅳ 急!!!!!!!!C语言 运用函数进行升序降序排列
在scanf("%c\n",&style);前加 char c; scanf("%c",&c);
原因:前面输入数字时有输入回车 scanf把这个回车赋给了style 所以 要把先那个回车吃了
Ⅳ C语言如何 对10个数进行降序排序。 这边要课程设计了。希望大家帮帮忙
冒泡排序算法实现10个数的降序排列,参考代码如下:
#include"stdio.h"
#defineN10
intmain()
{
inti,j;
intt,a[N];
for(i=0;i<N;++i)
scanf("%d",&a[i]);
for(i=0;i<N-1;++i)
for(j=0;j<N-i-1;++j)
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<N;++i)
printf("%d",a[i]);
return0;
}
Ⅵ 用C语言编写,输入10个数按降序排列
源程序代码如下:
#define _CRT_SECURE_NO_WARNINGS//VS环境下需要,VC不需要
#include<stdio.h>//头文件;
int main()
{
int i = 0;
int j = 0;
double temp = 0;
double a[10] = { 0 };//定义三个变量和一个长度为10的数组;
printf("请输入十个数:
");//显示“请输入十个数”
for (i = 0; i < 10; i++)
{
scanf("%lf", &a[i]);//从键盘上输入十个数送到数组;
}
for (i = 1; i < 10; i++)//for循环,进行9次循环;
{
for (j = i - 1; j >= 0; j--)//for循环,在每次大的循环中,a[i]从a[1]依次与它前面的数比较;
{
if (a[j + 1] > a[j])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;//如果a[j + 1]>a[j],则把这两个数组元素互换,目的把最大的数放到前边;
}
else
{
break;
}
}
}
for (i = 0; i < 10; i++)
{
printf("% lf
", a[i]);//输出排好顺序的十个数;
}
return 0;//返回值为0;
}
程序运行结果如下:
(6)c语言中怎么进行降序扩展阅读:
其他实现方法如下:
#include<stdio.h>
int mysort(int *a, int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
return 0;
}
int main()
{
int a[10];
int i, j;
printf("input 10 numbers:
");
for (i = 0; i < 10; i++)
{
printf("the number%d is:", i + 1);
scanf("%d", a + i);
fflush(stdin);
}
mysort(a, 10);
for (i = 9; i >= 0; i--)
printf("%3d", a[i]);
printf("
");
return 0;
}
Ⅶ C语言数组七个数升序排列和降序排列怎么编程
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
Ⅷ 用c语言对n个整数进行降序排列,并输出排序结果
#include<stdio.h>
voidsort(int*arr,intn);
intmain(intargc,char*argv[])
{
inti;
intarr[8]={12,67,122,0,-12,675,100,11};
sort(arr,8);
for(i=0;i<8;++i)
printf("%d",arr[i]);
return0;
}
//冒泡排序:降序
//arr:待排序的数组
//n:数组的长度
voidsort(int*arr,intn)
{
inti,j,t;
for(i=0;i<n-1;++i)
for(j=0;j<n-1-i;++j)
{
if(arr[j]<arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
Ⅸ c语言中按单科降序(选择)排序
void Sort_sub(Student *s,int n) //按单科降序(选择)排序
{int i,j;
char t[10];
s=head;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(s->num,s->next->num)>0)
{
strcpy(t,s->next->cgrade);
strcpy(s->next->cgrade,s->cgrade);
strcpy(s->cgrade,t);
strcpy(t,s->next->mgrade);
strcpy(s->next->mgrade,s->mgrade);
strcpy(s->mgrade,t);
strcpy(t,s->next->egrade);
strcpy(s->next->egrade,s->egrade);
strcpy(s->egrade,t);
strcpy(t,s->next->name);
strcpy(s->next->name,s->name);
strcpy(s->name,t);
}
s=s->next;
}
s=head;
}
}
Ⅹ 关于C语言进行降序排列
#include<stdio.h>
#include
<math.h>
//从键盘上输入10个整数,要求用插入法实现对它们进行降序排列。
//(主函数完成输入输出功能,排序用函数sort()来实现)。
void
sort(int
a[],int
n)
{
int
i,j,temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
int
main()
{
int
i,a[10]={0};
printf("请输入10个数据:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return
0;
}