一个数组有n个数,无序,找出从大到小排列在第k位的数,其中1<=k<=n,C/C++实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个数组有n个数,无序,找出从大到小排列在第k位的数,其中1<=k<=n,C/C++实现相关的知识,希望对你有一定的参考价值。
请教~~~
参考技术A #include "iostream.h"#define N 4
#define K 2
void main()
int a[N],i,j,t;
cout<<"输入"<<N<<"个自然数:"<<endl;
for(i=0;i<N;i++)
cin>>a[i];
//由大到小排序
for(i=0;i<N-2;i++)
for(j=1;j<N;j++)
if(a[i]<a[j])
t=a[i];
a[i]=a[j];
a[j]=t;
cout<<"由大到小排序后,第"<<K<<"个数是:"<<endl
<<a[K-1]<<endl;
参考技术B #define n 10
#include<stdio.h>
main()
int a[n],i,j,t,k;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("enter k:");
scanf("%d",&k);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
t = a[i];
a[i] = a[j];
a[j] = t;
for(i=0;i<n;i++)
printf("%d\n",a[i]);
printf("\n");
printf("%d",a[k-1]);
本回答被提问者采纳
C语言编程 数组从大到小排列
题目是这样的:从包括N个元素的数组a中,求出最大和最小元素,使得当N个元素为从小到大有序数列时,元素之间的比较次数为N-1次。希望各位大侠能够帮帮我,谢谢大家了!
我是这样想的啊,仅供参考定义两个变量 maxNum 和 minNum(类型应该是int吧)
然后把数组的第一个元素赋给这个两个变量
进行FOR循环(从第二个元素开始)
比较当前元素与最大最小元素的大小
大了赋给maxNum
小了赋给minNum
用伪代码表示:
maxNum=a[0]
minNum=a[0]
for(i=1;i<N;i++)
if(a[i]<minNum)
minNum=a[i]
if(a[i]>maxNum)
maxNum=a[i]
printf(最大值是maxNum,最小值是minNum)
不一定对
个人想法 参考技术A #include<stdio.h>
#define N 10
void main()
// const int N=10;
int a[N],max,min,temp,i,j;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
min=a[0];
max=a[9];
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("max=%d",max);
printf("min=%d",min);
本回答被提问者采纳 参考技术B #include<stdio.h>
#define
N
10
void
main()
//
const
int
N=10;
int
a[N],max,min,temp,i,j;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
min=a[0];
max=a[9];
for(i=0;i<10;i++)
printf("%d
",a[i]);
printf("max=%d",max);
printf("min=%d",min);
参考技术C 需进行排序运算,方法很多,下面为其中一种(从小到大排列)
dim
i
as
integer,j
as
integer
for
i=0
to
4
for
j=i+1
to
4
if
a(j)
评论
0
0
0
加载更多 参考技术D 冒泡就行了
很简单的
以上是关于一个数组有n个数,无序,找出从大到小排列在第k位的数,其中1<=k<=n,C/C++实现的主要内容,如果未能解决你的问题,请参考以下文章
将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次