js实现合并排序(归并排序)

let a = [3,4,1,2,5,6,2,3,1,7,9,8];

        // 合并排序(归并排序)

        function mergeSort(a,p,r){

            if(p<r){

                let q = Math.floor((p+r)/2);

                mergeSort(a,p,q);

                mergeSort(a,q+1,r);

                merge(a,p,q,r);

            }

        }

        function merge(a,p,q,r){

            let L = a.slice(p,q+1);

            let R = a.slice(q+1,r+1);

            let i1 = 0;

            let i2 = 0;

            while(i1 != L.length && i2 != R.length){

                if(L[i1]<=R[i2]){

                    a[p] = L[i1];

                    i1 ++;

                    p ++;

                }else{

                    a[p] = R[i2];

                    i2 ++;

                    p ++;

                }

            }

            while(i1 != L.length){

                a[p] = L[i1];;

                i1 ++;

                p ++;

            }

            while(i2 != R.length){

                a[p] = R[i2];

                i2 ++;

                p ++;

            }

        }

        mergeSort(a,0,a.length-1);

        console.log(a);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容