日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 排序算法總結之折半插入排序

排序算法總結之折半插入排序

來源:程序員人生   發布時間:2014-09-15 03:44:10 閱讀次數:3253次

基本思想

折半插入排序是對直接插入排序的簡單改進,對于直接插入排序而言,當第i-1趟需要將第i個元素插入前面的0~i-1個元素序列中時,總是需要從i-1個元素開始,逐個比較每個元素,直到找到它的位置。這顯然沒有利用前面0~i-1個元素已經有序這個特點,而折半插入排序則改進了這一點。

對于折半插入排序而言,當需要插入第i個元素時,它不會逐個進行比較每個元素,而是:

(1)計算0~i-1索引的中間點,也就是用i索引處的元素和(0+i-1)/2索引處的元素進行比較,如果i索引處的元素值大,就直接在(0+i-1)/2~i-1半個范圍內進行搜索;反之在0~(0+i-1)/2半個范圍內搜索,這就是所謂的折半;

(2)在半個范圍內搜索時,按照(1)的方法不斷地進行折半搜索,這樣就可以將搜索范圍縮小到1/2、1/4、1/8…,從而快速的確定插入位置;


Java實現代碼

package com.liuhao.sort; import java.util.Arrays; public class BinaryInsertSort {     public static void binaryInsertSort(DataWrap[] data){         int arrayLength = data.length;                  for(int i=1; i<arrayLength; i++){             DataWrap tmp = data[i];                          int low = 0;             int high = i-1;                          // 不斷折半,尋找合適的插入位置             while(low <= high){                 int mid = (low + high) / 2;                                  if(tmp.compareTo(data[mid]) > 0){                     low = mid + 1;                 }                 else{                     high = mid - 1;                 }             }                          // 依次后移             for(int j=i; j>low ; j--){                 data[j] = data[j-1];             }                          data[low] = tmp;             System.out.println(Arrays.toString(data));         }     }          public static void main(String[] args) {         DataWrap[] data = {                 new DataWrap(21, "")                 ,new DataWrap(30, "")                 ,new DataWrap(49, "")                 ,new DataWrap(30, "*")                 ,new DataWrap(16, "")                 ,new DataWrap(9, "") };         System.out.println("排序之前:" + Arrays.toString(data));         binaryInsertSort(data);                  System.out.println("排序之后:" + Arrays.toString(data));     }      }

image_thumb2


算法分析

折半插入排序減少了關鍵字的比較次數,但是記錄的移動次數不變,其時間復雜度與直接插入排序相同。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品亚洲精品国产欧美 | 国产美女一区二区 | 久久久久久久成人 | 亚洲精品福利视频 | 国产a免费| 亚洲国产精品网站 | 久久精品二区 | 欧美成人精品一区 | 欧美日韩在线一区二区 | 国产爽爽爽 | 男人天堂网在线观看 | 91欧美精品成人综合在线观看 | 日韩视频在线一区 | 欧美视频成人 | 血色浪漫 | 久久精品欧美一区二区三区不卡 | 日韩精品免费在线 | 亚洲成人国产 | 国产免费不卡 | 亚洲高清视频在线 | 日韩精品无码一区二区三区 | 操操操操操 | 99色网站 | xxxx中国一级片 | 99精品电影 | 人人艹人人 | 黄色精品| 亚洲黄色影院 | 久久国产伊人 | 亚洲一区二区三区影院 | 日本一区久久 | 国产精品视频一二三区 | 91偷拍精品一区二区三区 | xx视频在线 | 国产成人精品免费视频 | 成人一区二区三区 | 国产在线v | 国产免费一区 | 亚洲精品美女 | 国产黄a三级三级三级老师 国产麻豆精品一区二区 | av一区在线|