13. Éèa, a,?, aÊǼ¯ºÏ{1, 2, ?, n}µÄÒ»¸öÅÅÁУ¬Èç¹ûia£¬ÔòÐòż(a, a)³ÆÎª12nijij
¸ÃÅÅÁеÄÒ»¸öÄæÐò¡£ÀýÈ磬2, 3, 1ÓÐÁ½¸öÄæÐò:(3, 1)ºÍ(2, 1)¡£Éè¼ÆË㷨ͳ¼Æ¸ø¶¨ÅÅÁÐÖк¬
ÓÐÄæÐòµÄ¸öÊý¡£
//Óù鲢½øÐÐÅÅÐò
//µ±Ò»¸ö×Ó¼¯µÄÒ»¸öÊý´óÓÚµÚ¶þ¸ö×Ó¼¯µÄÒ»¸öÊý£¬ÎªÄæÐò£¬¼´a[i]>a[j] //ÔòÄæÐòÊýΪend-j+1; #include using namespace std; int count;
void Merge(int a[],int a1[],int begin,int mid,int end)//ºÏ²¢×ÓÐòÁÐ { int i=begin,j=mid+1,k=end; while(i<=mid&&j<=end) {
if(a[i]<=a[j])
a1[k++]=a[i++];//È¡a[i]ºÍa[j]ÖнÏСÕß·ÅÈër1[k] else {
a1[k++]=a[j++]; count+=(end-j+1); } }
while(i<=mid) a1[k++]=a[i++]; while(j<=end) a1[k++]=a[j++]; }
void MergeSort(int a[ ], int begin, int end)
{
int mid,a1[1000]; if(begin==end) return ; else {
mid=(begin+end)/2; MergeSort(a,begin,mid); MergeSort(a,mid+1,end); Merge(a,a1,begin,mid,end); } }
int main() {
int a[6]={6,5,4,3,2,1}; count=0;
MergeSort(a,0,6); cout<k14. Ñ»·ÈüÈճ̰²ÅÅÎÊÌâ¡£ÉèÓÐn=2¸öÑ¡ÊÖÒª½øÐÐÍøÇòÑ»·Èü£¬ÒªÇóÉè¼ÆÒ»¸öÂú×ãÒÔÏÂ
ÒªÇóµÄ±ÈÈüÈճ̱í:
(1)ÿ¸öÑ¡ÊÖ±ØÐëÓëÆäËûn-1¸öÑ¡ÊÖ¸÷ÈüÒ»´Î;
(2)ÿ¸öÑ¡ÊÖÒ»ÌìÖ»ÄÜÈüÒ»´Î¡£ ²ÉÓ÷ÖÖη½·¨¡£
½«2^kÑ¡ÊÖ·ÖΪ2^k-1Á½×飬²ÉÓõݹ鷽·¨£¬¼ÌÐø½øÐзÖ×飬ֱµ½Ö»Ê£ÏÂ2¸öÑ¡ÊÖʱ£¬È»
ºó½øÐбÈÈü£¬»ØËݾͿÉÒÔÖ¸¶¨±ÈÈüÈճ̱íÁË
n15. ¸ñÀ×ÂëÊÇÒ»¸ö³¤¶ÈΪ2µÄÐòÁУ¬ÐòÁÐÖÐÎÞÏàÍ¬ÔªËØ£¬ÇÒÿ¸öÔªËØ¶¼Êdz¤¶ÈΪnµÄ
3¶þ½øÖÆÎ»´®£¬ÏàÁÚÔªËØÇ¡ºÃÖ»ÓÐ1λ²»Í¬¡£ÀýÈ糤¶ÈΪ2µÄ¸ñÀ×ÂëΪ(000, 001, 011, 010, 110,
111, 101, 100)¡£Éè¼Æ·ÖÖÎËã·¨¶ÔÈÎÒâµÄnÖµ¹¹ÔìÏàÓ¦µÄ¸ñÀ×Âë¡£ //¹¹Ôì¸ñÀ×Âë #include using namespace std; int n; char a[100]; void gelei(int k) { if(k==n) {
cout<gelei(k+1);
a[k]='0'?'1':'0'; //È¡·´