求解数组的最小2个元素
- C/C++ code
void fun(int* arr,int pos, int* s, int* t,int n);功能:int arr[n];求解a[0:pos] 里的最小两个值,*和*t.pos<n;求解最通俗的算法,并附思路说明,不能修改数组,所以不能排序我脑子不好使啊,
[解决办法]
[解决办法]
/*
*在n行n列的数组里面按一下要求选出两个数。首先从每行选出最大的数,再从n个最大的数里面选出一个最小的数;
*其次,从每行选出最小的数,再从选出的最小的数里面选出一个最大的数。
* */
#include <stdio.h>
#include <conio.h>
#include<stdlib.h >
#define MAXN20
int a[MAXN][MAXN] ;
void main(void)
{
int max ; /*save max value*/
int min ; /*save min value*/
int row , col , n ;
system("cls");
printf(" please input the elements of the matrix : \n ") ;/* 输入方阵的阶次*/
scanf(" %d " , &n ) ;
printf(" please input the order of the matrix \n from a[0][0] to a[%d][%d] : \n " , n-1 , n-1 ) ;
for(row = 0 ; row < n ; row ++)
{
for(col = 0 ; col < n ; col ++)
{
scanf( " %d" , &a[row][col] ) ;
}
}
for(max = a[0][0] , row = 0 ; row < n ; row ++)
{
/* choose the min value from row*/
for(min = a[row][0] , col = 0 ; col < n ; col ++)
{
if(min > a[row][col])/*save min value from row */
{
min = a[row][col] ;
}
if( min > max)
{
max = min ;
}
}
}
printf(" the maxxnum of minxnum is %d :\n " , max ) ;
for(min = a[0][0] , row = 0 ; row < n; row ++)
{
for( max = a[row][0] , col = 0 ; col < n ; col ++)
{
if( min > a [row][col])/* save the max value every row*/
{
max = min ;
}
if(max < min )
{
max = min ;
}
}
}
printf(" the minxnum of maxxnum is : %d \t " , min ) ;
getch() ;
}