搜尋
首頁JavaJava入門java實作插入排序後怎麼進一步優化

java實作插入排序後怎麼進一步優化

Dec 29, 2020 am 10:12 AM
java插入排序

java實作插入排序後怎麼進一步優化

學習影片分享:java影片教學

#普通插入:從陣列的第二個元素進行操作,當發現其前面的元素比他大時,執行交換操作。

static int[] insertSort(int[] array){
        int len = array.length;
        for (int begin = 1; begin  0 && array[cur] <p><strong>第一步優化:從數組的第二個元素進行操作,如果發現其前面的元素比他大,就將其前面的元素往後挪,直到cur指向的元素大於或等於他前一個元素,此時cur指向的位置就是待插入元素應該插入的位置。 </strong><br></p><pre class="brush:php;toolbar:false">    static int[] insertSort2(int[] array){
        int len = array.length;
        for (int begin = 1; begin  0 && array[cur] <p><strong>第二步優化</strong><br></p><p><strong>#第三種演算法和第二種其實本質上是一樣的,都是找待插入位置,挪動元素,只不過第三種演算法透過二分查找減少了比較次數,即cmp函數的調用,也減少了swap函數的調用。更快的找到了當前元素應該插入的位置,然後再進行挪動,提高了效率。 </strong></p><pre class="brush:php;toolbar:false">static int[] insertSort3(int[] array){
        int len = array.length;

        for (int begin = 1; begin  insertIndex; i--){
                array[i] = array[i-1];
            }
            array[insertIndex] = v;
        }
        return array;
    }
    static int search(int[] array, int index){
        int begin = 0;
        int end = index;
        while(begin > 1;
            if (array[index] <p><strong>要注意的是:使用了二分搜尋後,只是減少了比較次數,但插入排序的平均時間複雜度依然是O(n^2)</strong><br></p><p><strong>將其中的挪動操作分開的效果:</strong></p><pre class="brush:php;toolbar:false">    package com.mj.sort.cmp;import com.mj.sort.Sort;public class InsertionSort3<t>> extends Sort<t> {

	//	protected void sort() {//		for (int begin = 1; begin = insertIndex; i--) {							}//			for (int i = begin; i > insertIndex; i--) {//				array[i] = array[i - 1];//			}//			array[insertIndex] = v;//		}//	}
	
	@Override
	protected void sort() {
		for (int begin = 1; begin  dest; i--) {
			array[i] = array[i - 1];
		}
		array[dest] = v;
	}
	
	/**
	 * 利用二分搜索找到 index 位置元素的待插入位置
	 * 已经排好序数组的区间范围是 [0, index)
	 * @param index
	 * @return
	 */
	private int search(int index) {
		int begin = 0;
		int end = index;
		while (begin > 1;
			if (cmp(array[index], array[mid]) <p>相關推薦:<a href="https://www.php.cn/java/guide/" target="_blank">java入門教學</a></p>#</t></t>

以上是java實作插入排序後怎麼進一步優化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。