當前位置:編程學習大全網 - 源碼下載 - C語言編程高手請進~~~~~請壹定要幫幫忙,萬分感謝~~~~~!!!!!!!小蝦米自己實在是能力有限,謝謝各位

C語言編程高手請進~~~~~請壹定要幫幫忙,萬分感謝~~~~~!!!!!!!小蝦米自己實在是能力有限,謝謝各位

第1題題目表述不清,普通的二叉樹的合並沒有任何意義,如果是二叉排序樹還差不多。若非要進行普通的二叉樹的合並,只要將壹個樹的插入到另壹個樹的度非2的結點上,最簡便的做法是沿著另壹個樹的根壹直遍歷到左子樹的葉子結點,不過這沒有意義。要是這樣的話,此題太簡單了,自己實現吧!!

第2題

(1)排序結束的最基本即最保守的條件是:進行n次奇偶交換操作。

還有壹個是針對本來就基本有序的情況,如果在n次循環中,有兩次沒有交換操作,則停止排序,因為此時必有序!

故綜合起來為:當有兩次沒有交換操作或進行了n次奇偶交換時,排序結束。

(2)源代碼

#include<iostream>

#include<string>

using namespace std;

void OddEvenSort(int* p,const int& size)

{

int k=-1;

for(int i=0;i<size;++i)

{

int j=i%2;

for(;j<size;j+=2)

if(j+1<size&&p[j]>p[j+1])

{

++k;

p[j]=p[j+1]^p[j] , p[j+1]=p[j]^p[j+1] , p[j]=p[j+1]^p[j] ;//交換

}

if(i-k==2)

break;//兩次沒有交換,排序停止

}

}

void PrintArray(int* p,const int& size)

{

for(int i=0;i<size;++i)

{

cout<<p[i]<<'\t';

if((i+1)%8==0)

cout<<endl;

}

cout<<endl;

}

void main()

{

int size=0;

int *p=0;

cout<<"Enter the size of an array!"<<endl;

cin>>size;

p=new int[size];

cout<<"Please input the elements!"<<endl;

for(int i=0;i<size;++i)

cin>>p[i];

OddEvenSort(p,size);

cout<<"After the sortion,the array is:"<<endl;

PrintArray(p,size);

delete[] p;

}

  • 上一篇:國民收入核算用什麽指標?這些指標是什麽意思?
  • 下一篇:java架構師,需要什麽條件?
  • copyright 2024編程學習大全網