溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中怎么實(shí)現(xiàn)一個(gè)折半插入排序算法

發(fā)布時(shí)間:2021-08-09 14:07:17 來源:億速云 閱讀:120 作者:Leah 欄目:云計(jì)算

Java中怎么實(shí)現(xiàn)一個(gè)折半插入排序算法 ,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。


  折半插入排序方法的思想是,先以第一個(gè)數(shù)為基準(zhǔn),作為一個(gè)有序的數(shù)列,依次把它后面的數(shù)字以折半的方式插入這個(gè)有序的數(shù)列。
  如下圖所示:
  數(shù)組的前五位已經(jīng)排好,現(xiàn)在要將1排序。
  Java中怎么實(shí)現(xiàn)一個(gè)折半插入排序算法
  


  Java具體實(shí)現(xiàn)代碼:
  輸入:數(shù)據(jù)元素?cái)?shù)組r,數(shù)組r 的待排序區(qū)間[low..high]
  輸出:數(shù)組r 以關(guān)鍵字有序
  代碼:

public void binInsertSort(Object[] r, int low, int high){for (int i=low+1; i<=high; i++){
        Object temp = r[i]; //保存待插入元素int hi = i-1; int lo = low; //設(shè)置初始區(qū)間while (lo<=hi){ //折半確定插入位置int mid = (lo+hi)/2;if(strategy.compare(temp,r[mid])<0)
        hi = mid - 1;else lo = mid + 1;
        }for (int j=i-1;j>hi;j--) r[j+1] = r[j]; //移動(dòng)元素r[hi+1] = temp; //插入元素}//for}

看完上述內(nèi)容,你們掌握J(rèn)ava中怎么實(shí)現(xiàn)一個(gè)折半插入排序算法 的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI