发布网友 发布时间:2022-04-22 18:09
共5个回答
热心网友 时间:2023-06-30 16:33
在函数中利用动态数组复制原数组,并生成一个下标数组与复制数组相对应
对复制后的数组进行冒泡排序n次,冒泡的同时对下标数组进行相应的操作,保证这两个数组的对应关系
第n次冒泡就可以从下标数组得到所需的位置信息了。
也可以参考下面这段代码,写了这么多,请采纳吧。
int findN(int arr[], int m, int n){热心网友 时间:2023-06-30 16:34
int iArry1[m] = { 0 };
//do sth to stuff iArry1 here;
//将iArry1排序,
int nMax = iArry1[0];nMin= iArry1[0];
int nMaxIndex = 0;
for(int i = 0; i < m; i++)
{
if(iArry1[i] > nMax)
{
nMax = iArry1[i];
nMaxIndex = i;
}
if(iArry[i] < nMin)
{
nMin = = iArry1[i];
}
}
iArry1[nMaxIndex] = nMin - 1;
for(int i = 1; i < n; i++)
{
nMax = iArry1[0];
nMaxIndex = 0;
for(int j = 0; j < m; j++)
{
if(iArry1[j] > nMax)
{
nMax = iArry1[j];
nMaxIndex = j;
}
}
iArry1[nMaxIndex] = nMin - 1;
}
printf("第%d大的数字为:%d",n,nMax);
以上代码没有考虑数字相同情况,并且没有对m,n等做检查,随手写的,就是说了下想法,具体是否有错误还需自行调试。
热心网友 时间:2023-06-30 16:34
先排序
遍历数组 如果 a[i] != [i-1] n--
当 n ==1 时 此时数组下标即为所求值
热心网友 时间:2023-06-30 16:35
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int m_n_s(int *p,int m,int n){
int a[100],i,j,k,x;
memcpy(a,p,m*(x=sizeof(int)));
for(k=(1<<x*8)-1;n;n--){
for(x=a[0],i=1;i<m;i++)
if(a[i]>x) x=a[j=i];
a[j]=k;
}
return j;
}
void main(void){
int a[100],n,i,j,k;
printf("Enter some data...\n");
for(i=0;i<100;i++)
if(scanf("%d",a+i)!=1)
break;
printf("Type n(n<%d)...\nn=",i);
fflush(stdin);
scanf("%d",&n);
printf("第%d大的下标是%d\n",n,m_n_s(a,i,n));
}
热心网友 时间:2023-06-30 16:35
从小到大排序,输出第n个元素