声明:本文最初发表于《电脑编程技巧与维护》2006年第5期,版本所有,如蒙转载,敬请连此声明一起转载,否则追究侵权责任。网上发表于恋花蝶的博客http://lanphaday.bokee.com
题目:从1亿个整数数中找出最大的1万个。
拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来。原因很简单,因为如果要找出最大的那个数,就是这样解决的;而找最大的1万个数,只是重复1万遍而已。
template< class T > void solution_1( T BigArr[], T ResArr[] ) { for( int i = 0; i < RES_ARR_SIZE; ++i ) { int idx = i; for( int j = i+1; j < BIG_ARR_SIZE; ++j ) { if( BigArr[j] > BigArr[idx] ) idx = j; } ResArr[i] = BigArr[idx]; std::swap( BigArr[idx], BigArr[i] ); } }