java排序演算法(七):折半插入排序,java折半

來源:互聯網
上載者:User

java排序演算法(七):折半插入排序,java折半

java排序演算法(七):折半插入排序

  折半插入排序法又稱為二分插入排序法,是直接插入排序法的改良版本,也需要執行i-1趟插入。不同之處在於第i趟插入。先找出第i+1個元素應該插入的位置。假設前i個資料是已經處於有序狀態

  代碼實現

  

package com.spring.test;/** * 折半插入排序 */public class BinaryInsertSort {    public static void main(String[] args) {        int[] data = new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 };        print(data);        binaryInsertSort(data);        print(data);    }    /**     * 折半插入     * @param data     */    public static void binaryInsertSort(int[] data){        for(int i=1;i<data.length;i++){            if(data[i] < data[i-1]){                //緩衝i處的元素值                int tmp = data[i];                //記錄搜尋範圍的左邊界                int low = 0;                int high = i-1;                while(low <= high){                    //記錄中間位置                    int mid = (low+high)/2;                    //比較中間位置資料和i處資料大小,以縮小搜尋範圍                    if(data[mid] < tmp){                        low = mid +1;                    }else{                        high = mid - 1;                    }                }                //將low---i處的資料整體向後移動1位                for(int j = i;j>low;j--){                    data[j] = data[j-1];                }                data[low] = tmp;                print(data);            }        }    }    /**     * 對兩個資料進行交換     * @param data     * @param i     * @param j     */    public static void swap(int[] data,int i,int j){        if(i==j){            return ;        }        data[i] = data[i] + data[j];        data[j] = data[i] - data[j];        data[i] = data[i] - data[j];    }    /**     * 對數組進行列印輸出     * @param data     */    public static void print(int[] data){        for(int i=0;i<data.length;i++){            System.out.print(data[i]+"\t");        }        System.out.println();    }}

運行結果

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.