排序:歸并排序

歸并排序運(yùn)用分治的思想,把大的問題逐部分解成能夠解決的小問題.
時(shí)間復(fù)雜度為nlogn.
Ps:使用引用傳遞的方法把臨時(shí)數(shù)組賦值進(jìn)去,這樣就可以沒必要每次都生成一個(gè)新的數(shù)組.

代碼:

/**
 * Created by Hammy on 2018/3/1.
 */
public class MergeSort
{
    /**
     * 二路歸并排序
     */

    public static void sort(int[] array){
        int[] tempArray = new int[array.length];
        mergeSort(array,tempArray,0,array.length-1);

    }

    private static void mergeSort(int[] array,int[] tempArray,int left,int right){
        if(left>=right)
            return;

        int mid=left+((right-left)>>1);
        mergeSort(array,tempArray,left,mid);
        mergeSort(array,tempArray,mid+1,right);
        merge(array,tempArray,left,mid,right);
    }

    private static void merge(int[] array,int[] tempArray,int left,int mid,int right){
        int tempIndex = left;
        int copyIndex = left;
        int rightStart = mid+1;

        while(left<=mid&&rightStart<=right){
            if(array[left]<array[rightStart]){
                tempArray[tempIndex++]=array[left++];
            }else{
                tempArray[tempIndex++]=array[rightStart++];
            }
        }
        while(left<=mid)
            tempArray[tempIndex++]=array[left++];
        while(rightStart<=right)
            tempArray[tempIndex++]=array[rightStart++];

        //開始復(fù)制
        while(copyIndex<=right){
            array[copyIndex]=tempArray[copyIndex++];
        }
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 分治法,是算法思想里最基礎(chǔ)的思想。這也和人的基本思維有關(guān),當(dāng)我們需要解決一個(gè)大的問題時(shí),直覺的就會(huì)將這個(gè)大問題分成...
    一口咖啡一口茶閱讀 4,000評(píng)論 1 18
  • 歸并排序是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為O(nlogn),1945年由馮·諾伊曼首次提出。 歸并排序...
    北風(fēng)第一支閱讀 185評(píng)論 0 0
  • 1.快速排序 快速排序每趟選擇一個(gè)基準(zhǔn)元素,用基準(zhǔn)元素將序列劃分成兩部分,所有比基準(zhǔn)值小的元素?cái)[放在基準(zhǔn)前面,所有...
    游戲開發(fā)小Y閱讀 231評(píng)論 0 0
  • 1.快速排序 快速排序每趟選擇一個(gè)基準(zhǔn)元素,用基準(zhǔn)元素將序列劃分成兩部分,所有比基準(zhǔn)值小的元素?cái)[放在基準(zhǔn)前面,所有...
    sunnygarden閱讀 292評(píng)論 0 2
  • 莫此蕭山墜高云, 睥睨嚴(yán)霜葬幽谷。 如華如玉攔世間, 長(zhǎng)風(fēng)難倦墓伊人。
    今聿閱讀 392評(píng)論 0 0