北京网站制作建设,廉江手机网站建设,湖南做网站的公司有哪些,山西响应式网页建设哪里好2、归并排序 步骤#xff1a;
选取中间点 mid (LR)/2递归排序 左边left 和 右边 right归并 ---- 将数组合二为一
模板代码
int temp[10];
void merge_sort(int q[], int l, int r) {//如果左右边界相等 直接退出if (l r) return;//获取数组中心int mid (l r) / 2;/…2、归并排序 步骤
选取中间点 mid (LR)/2递归排序 左边left 和 右边 right归并 ---- 将数组合二为一
模板代码
int temp[10];
void merge_sort(int q[], int l, int r) {//如果左右边界相等 直接退出if (l r) return;//获取数组中心int mid (l r) / 2;//递归排序 分成左右两边merge_sort(q, l, mid);merge_sort(q, mid1,r);//归并的过程//k 表示当前temp数组有多少个数了int k 0;//i 指向左半边的起点int i l;//j 指向右半边的起点int j mid 1;while (imid jr){//两个数组的当前指向的数 谁大 放入临时数组if (q[i]q[j]){temp[k] q[i];}else {temp[k] q[j];}}//走到最后 有一个数组会先走完 那么我们把剩下的另一个数组拿过来接到最后while (imid){temp[k] q[i];}while (jr){temp[k] q[j];}//将结果拿回原数组//这里是分段的将排序好的数组拿回q[]中并不是将所有的元素排好后统一拿进去for (i l, j 0; i r; i, j) {q[i] temp[j];}}相比于快排这里会多使用一个temp临时的数组