void Merge(T a[],T b[],int left,int i,int right)
{
int a1cout=left,//指向第一個(gè)數(shù)組開(kāi)頭
a1end=i,//指向第一個(gè)數(shù)組結(jié)尾
a2cout=i+1,//指向第二個(gè)數(shù)組開(kāi)頭
a2end=right,//指向第二個(gè)數(shù)組結(jié)尾
bcout=0;//指向b中的元素
for(int j=0;j { if(a1cout>a1end){b[bcout++]=a[a2cout++];continue;}//如果第一個(gè)數(shù)組結(jié)束,拷貝第二個(gè)數(shù)組的元素到b if(a2cout>a2end){b[bcout++]=a[a1cout++];continue;}//如果第二個(gè)數(shù)組結(jié)束,拷貝第一個(gè)數(shù)組的元素到b if(a[a1cout]
else {b[bcout++]=a[a2cout++];continue;} } } //對(duì)數(shù)組a[left:right]進(jìn)行合并排序 template void MergeSort(T a[],int left,int right) { T *b=new int[right-left+1]; if(left int i=(left+right)/2;//取中點(diǎn) MergeSort(a,left,i);//左半邊進(jìn)行合并排序 MergeSort(a,i+1,right);//右半邊進(jìn)行合并排序 Merge(a,b,left,i,right);//左右合并到b中 Copy(a,b,left,right);//從b拷貝回來(lái) } } //from int main() { int n; cout<<"how many numbers to sort:"; cin>>n; int *a=new int[n]; cout<<"input "< for(int i=0;i {cin>>a[i];} MergeSort( a, 0, n-1); for(int j=0;j { cout< } return 1; } 2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢(xún)時(shí)間匯總 2011年計(jì)算機(jī)等級(jí)考試二級(jí)C++輔導(dǎo)筆記匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |