void merge(thing*time,thing*tmp,int left,int left_end,int right,int right_end){ int size = right_end -left +1,k=left; while(left<=left_end&&right<=right_end){ if(time[left].end<=time[right].end){ tmp[k++] = time[left++]; } else tmp[k++] = time[right++]; } while(left<=left_end) tmp[k++] = time[left++]; while(right<=right_end) tmp[k++] = time[right++]; for(int i=0;i<size;i++,right_end--){ time[right_end] = tmp[right_end]; } } void mergeSort(thing*time,thing*tmp,int start,int end){ if(start>=end) return; int mid = (start+end)/2; mergeSort(time,tmp,start,mid); mergeSort(time,tmp,mid+1,end); merge(time,tmp,start,mid,mid+1,end); }
C语言归并排序的实现
最新推荐文章于 2024-07-19 19:11:19 发布
本文详细介绍了C++中的归并排序算法,包括merge()函数用于合并两个已排序的区间,以及mergeSort()函数递归地对数组进行分割和合并,最终达到整个序列有序。
摘要由CSDN通过智能技术生成