现在看题有种感觉:只闻其名,不知其所云.
比如这个归并.
来吧来吧不多说了啊啊
1 #include <iostream> 2 #include <set> 3 #include <cstring> 4 5 using namespace std; 6 int a[10]={1,2,6,3,4,7,8,9,5,10}; 7 int b[100]; 8 void Merge(int a[],int s,int m,int e,int temp[]){ 9 int pa=s; 10 int pb=m+1; 11 int t=0; 12 while(pa<=m && pb<=e){ 13 if(a[pa]>a[pb]){ 14 temp[t++]=a[pa++]; 15 } 16 else{ 17 temp[t++]=a[pb++]; 18 19 } 20 21 } 22 while(pa<=m){ 23 temp[t++]=a[pa++]; 24 } 25 while(pb<=e){ 26 temp[t++]=a[pb++]; 27 28 } 29 for (int i = 0; i <= e-s; ++i) { 30 a[s+i]=temp[i]; 31 32 } 33 34 } 35 void Mergesort(int a[],int s,int e,int temp[]){ 36 if(s<e){ 37 int m=s+(e-s)/2; 38 Mergesort(a,s,m,temp); 39 Mergesort(a,m+1,e,temp); 40 Merge(a,s,m,e,temp); 41 42 } 43 44 } 45 int main(){ 46 int size=sizeof(a)/sizeof(int); 47 Mergesort(a,0,size-1,b);//别落了这个减一 48 for (int i = 0; i < size; ++i) { 49 cout<<a[i]<<" "; 50 51 } 52 }
一开始while 写错了条件QAQ
就是乖乖写小于就好,不要写!=
while其实就是没有人家for用的熟练