首页 > 代码库 > 归并排序
归并排序
基本过程
1.将数组递归分解为有序数组(当分解到数组元素个数为1时候,数组自然有序)
2.将两个有序数组合并为一个大的有序数组
3.递归合并完成,即排序完成
javascript实现
function fMergeSort(arr,first,last,aTemp){ if(first > last){ throw new Error(‘first should less than last‘); } //取中对数组进行二分 var mid = (first + last)/2; fMergeSort(arr,first,mid,aTemp); fMergeSort(arr,mid+1,last,aTemp); fMergeArray(arr,first,mid,last,aTemp); } function fMergeArray(arr,first,mid,last,aTemp){ var k = 0, left = first,leftEnd = mid, right = mid+1,rightEnd = last; //将左右数组中较小者优先复制到临时数组 while(left <= leftEnd && right <= rightEnd){ if(arr[left] <= a[right]){ aTemp[k++] = arr[left++]; } else{ aTemp[k++] = arr[right++]; } } //将left或right剩余元素复制到临时数组,left或right只会有一个剩余 while(left <= leftEnd){ aTemp[k++] = arr[left++]; } while(right <= rightEnd){ aTemp[k++] = arr[right++]; } //将临时数组元素复制到元素数组中 for(var i=0;i<k;i++){ arr[first+i] = aTemp[i]; } }
归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。