logo资料库

算法分析与设计数列极差问题.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
#include "stdafx.h" #include "conio.h" #include "stdlib.h" #define maxNums 1024 void sort( int nums[] , int n , int max2min[] , int min2max[] ) { int i , j , t; int nmax , pmax; int nmin , pmin; for( i = 0 ; i < n ; i++ ) { max2min[i] = nums[i]; min2max[i] = nums[i]; } for( i = 0 ; i < n - 1 ; i++ ) { nmax = max2min[i]; pmax = i; nmin = min2max[i]; pmin = i; for( j = i + 1 ; j < n ; j++ ) { if( nmax < max2min[j] ) { nmax = max2min[j]; pmax = j; } if( nmin > min2max[j] )
{ nmin = min2max[j]; pmin = j; } } t = max2min[i]; max2min[i] = max2min[pmax]; max2min[pmax] = t; t = min2max[i]; min2max[i] = min2max[pmin]; min2max[pmin] = t; } } int max_min( int nums[] , int n ) { int nmax[maxNums]; int nmin[maxNums]; sort( nums , n , nmax , nmin ); printf( "decrease order:\t" ); for( int i = 0 ; i < n ; i++ ) printf( "%3d" , nmax[i] ); printf( "\n" ); printf( "increase order:\t" ); for( int i = 0 ; i < n ; i++ ) printf( "%3d" , nmin[i] ); printf( "\n" ); for( int i = n - 1 ; i > 0 ; i-- ) {
nmax[i-1] = nmax[i-1] * nmax[i] + 1; int j = i - 1; while( j > 0 && nmax[j] > nmax[j-1] ) { int t = nmax[j]; nmax[j] = nmax[j-1]; nmax[j-1] = t; } } for( int i = n - 1 ; i > 0 ; i-- ) { nmin[i-1] = nmin[i-1] * nmin[i] + 1; int j = i - 1; while( j > 0 && nmin[j] > nmin[j-1] ) { int t = nmin[j]; nmin[j] = nmin[j-1]; nmin[j-1] = t; } } printf( "max=%d\n" , nmax[0] ); printf( "min=%d\n" , nmin[0] ); return nmax[0]-nmin[0]; } int _tmain(int argc, _TCHAR* argv[]) { int nums[] = { 1 , 5 , 3 , 7 }; int n = 4; printf( "max-min=%d\n" , max_min( nums , n ) );
getch(); return 0; }
分享到:
收藏