国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

選擇排序算法之泛型優(yōu)化

這篇具有很好參考價值的文章主要介紹了選擇排序算法之泛型優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

選擇排序算法

工作原理:

每一次從待排序的數(shù)據(jù)元素中選中最小的一個元素,然后,再從剩余未排序元素中繼續(xù)尋找最小元素,將2個元素交換位置,就達(dá)到了已排序的元素一直是從小到大了。

這個算法的時間復(fù)雜度為O(n2),空間復(fù)雜度為O(1)。

/**
 * @Author: 翰林猿
 * @Description:選擇排序
 **/
public class Select {
 ? ?public Select() {
 ?  }
?
 ? ?public static void SelectionSort(int[] arr) {
 ? ? ? ?//i: 當(dāng)前位置  j: 從當(dāng)前位置開始增加的變量(用于從當(dāng)前位置開始遍歷,減少遍歷量)
 ? ? ? ?for (int i = 0; i < arr.length; i++) { ? ? ?//遍歷數(shù)組,發(fā)現(xiàn)最小的,與當(dāng)前的交換
 ? ? ? ? ? ?int min_index = i; ? ? ? ? ? ? ? ? ? ? ?//用于記錄最小項的下標(biāo)
 ? ? ? ? ? ?for (int j = i; j < arr.length; j++) { ?//從當(dāng)前位置開始遍歷,找到最小的
 ? ? ? ? ? ? ? ?if (arr[min_index] > arr[j]) { ? ? ? //如果最小項大于j處項
 ? ? ? ? ? ? ? ? ? ?min_index = j;
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  }
 ? ? ? ? ? ?//到此為止,我們已經(jīng)找到了比當(dāng)前位置i小的最小項,將二者交換即可。
 ? ? ? ? ? ?swap(min_index, i, arr);
 ? ? ?  }
 ?  }
?
 ? ?public static void swap(int min_index, int i, int[] arr) { ?
 ? ? ? ?int t = arr[min_index];
 ? ? ? ?arr[min_index] = arr[i];
 ? ? ? ?arr[i] = t;
 ?  }
?
 ? ?public static void main(String[] args) {
 ? ? ? ?int[] arr = {1, 8, 9, 7, 3, 5, 6};
 ? ? ? ?Select.SelectionSort(arr);
 ? ? ? ?for (int it : arr) {
 ? ? ? ? ? ?System.out.println(it);
 ? ? ?  }
 ?  }
}

當(dāng)然,為了匹配多種類型的對象,可以使用泛型匹配各類對象的排序文章來源地址http://www.zghlxwxcb.cn/news/detail-458952.html

/**
 * @Author: 翰林猿
 * @Description:選擇排序
 **/
public class Select {
 ? ?public Select() {
 ?  }
?
 ? ?public static <E extends Comparable<E>>void SelectionSort(E[] arr) { ? ? ? ?
 ? ? ? ?//i: 當(dāng)前位置  j: 從當(dāng)前位置開始增加的變量(用于從當(dāng)前位置開始遍歷,減少遍歷量)
 ? ? ? ?for (int i = 0; i < arr.length; i++) { ? ? ? ? ? ? ?//遍歷數(shù)組,發(fā)現(xiàn)最小的,與當(dāng)前的交換
 ? ? ? ? ? ?int min_index = i; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//用于記錄最小項的下標(biāo)
 ? ? ? ? ? ?for (int j = i; j < arr.length; j++) { ? ? ? ? ?//從當(dāng)前位置開始遍歷,找到最小的
 ? ? ? ? ? ? ? ?if (arr[min_index].compareTo(arr[j]) < 0) { ? ? ? //如果最小項大于j處項
 ? ? ? ? ? ? ? ? ? ?min_index = j;
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  }
 ? ? ? ? ? ?//到此為止,我們已經(jīng)找到了比當(dāng)前位置i小的最小項,將二者交換即可。
 ? ? ? ? ? ?swap(min_index, i, arr);
 ? ? ?  }
 ?  }
?
 ? ?public static <E> void swap(int min_index, int i, E[] arr) {
 ? ? ? ?E t = arr[min_index];
 ? ? ? ?arr[min_index] = arr[i];
 ? ? ? ?arr[i] = t;
 ?  }
?
 ? ?public static void main(String[] args) {
 ? ? ? ?Integer[] arr = {1, 8, 9, 7, 3, 5, 6};
 ? ? ? ?Select.SelectionSort(arr);
 ? ? ? ?for (int it : arr) {
 ? ? ? ? ? ?System.out.println(it);
 ? ? ?  }
 ?  }
}

到了這里,關(guān)于選擇排序算法之泛型優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java之泛型

    Java之泛型

    泛型: 泛型實現(xiàn)了參數(shù)化類型的概念,使代碼可以應(yīng)用于多種類型。 泛型的目的是希望類或方法能夠具有最廣泛的表達(dá)能力。 Java的泛型的主要目的之一就是用來指定容器要持有什么類型的對象,而且由編譯器來保證類型的正確性。 泛型類: 類型參數(shù):用尖括號括住,實際

    2024年02月11日
    瀏覽(23)
  • java入坑之泛型

    java入坑之泛型

    Java泛型是JDK 5中引入的一個新特性,它提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型 泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。這意味著你可以使用一套代碼來處理多種不同類型的數(shù)據(jù) ArrayListE,E表示元素El

    2024年02月10日
    瀏覽(26)
  • TypeScript 進階之泛型

    避免代碼重復(fù)和創(chuàng)建可重用類型是編寫干凈代碼的重要部分。 將所有類型屬性都設(shè)置為可選 Required 與 Partial 相反。它構(gòu)造一個類型,其中需要該類型的所有屬性。它可用于確保沒有可選屬性出現(xiàn)在類型中。 多屬性的對象中摘取某些屬性。 鍵可以是字符串文字或字符串文字的

    2024年01月23日
    瀏覽(24)
  • 30天拿下Rust之泛型

    概述 ????????在Rust語言中,泛型是一種強大的工具,它允許我們編寫可復(fù)用且靈活的代碼。通過泛型,我們可以創(chuàng)建適用于多種類型的數(shù)據(jù)結(jié)構(gòu)和函數(shù),而無需為每種類型都重復(fù)編寫相同的邏輯。在Rust中,泛型通過指定類型參數(shù)來實現(xiàn),這些類型參數(shù)會在編譯時被具體類

    2024年03月17日
    瀏覽(26)
  • Rust之泛型、trait與生命周期

    泛型是具體類型或其他屬性的抽象替代。在編寫代碼時,可以直接描述泛型的行為,或者它與其他泛型產(chǎn)生的聯(lián)系,而無須知曉它在編譯和運行代碼時采用的具體類型。 們可以在聲明函數(shù)簽名或結(jié)構(gòu)體等元素時使用泛型,并在隨后搭配不同的具體類型來使用這些元素。 當(dāng)使

    2024年02月13日
    瀏覽(25)
  • C#(六十二)之泛型的約束

    C#(六十二)之泛型的約束

    類型約束 基類約束有兩個重要的目的。 1:它允許在泛型類中使用有約束指定的基類成員。 2:確保只能使用支持指定基類或派生類的類型實例。 約束是使用?where?上下文指定的。 下表列出了五種類型的約束: 約束 說明 T:struct 類型參數(shù)必須是值類型??梢灾付ǔ?/p>

    2024年02月17日
    瀏覽(20)
  • 排序算法大全:冒泡排序【含優(yōu)化】,選擇排序【含優(yōu)化】,直接插入排序,希爾排序,堆排序,快速排序【含3種實現(xiàn)版本及非遞歸實現(xiàn)】,歸并排序【含非遞歸實現(xiàn)】。詳細(xì)圖解,文字解釋,代碼實現(xiàn),性能分析。

    排序算法大全:冒泡排序【含優(yōu)化】,選擇排序【含優(yōu)化】,直接插入排序,希爾排序,堆排序,快速排序【含3種實現(xiàn)版本及非遞歸實現(xiàn)】,歸并排序【含非遞歸實現(xiàn)】。詳細(xì)圖解,文字解釋,代碼實現(xiàn),性能分析。

    目錄 ?一、冒泡排序 1、冒泡排序思想 2、冒泡排序算法的性能分析 二、選擇排序 1、選擇排序思想 2、選擇排序算法的性能分析? ?三、直接插入排序 1、直接插入排序思想 2、直接插入排序算法的性能分析 四、希爾排序 1、希爾排序思想 2、希爾排序算法的性能分析 五、堆排

    2024年02月20日
    瀏覽(25)
  • Rust之泛型、特性和生命期(四):驗證有生存期的引用

    Rust之泛型、特性和生命期(四):驗證有生存期的引用

    ? Windows 10 Rust 1.71.0 ? VS Code 1.80.1 這里繼續(xù)沿用上次工程rust-demo 生存期是我們已經(jīng)在使用的另一種泛型。生存期不是確保一個類型具有我們想要的行為,而是確保引用在我們需要時有效。 我們在第4章“引用和借用”一節(jié)中沒有討論的一個細(xì)節(jié)是,Rust中的每個引用都有一個生

    2024年02月16日
    瀏覽(24)
  • Rust之泛型、特性和生命期(三):Traits:定義共同的行為

    Rust之泛型、特性和生命期(三):Traits:定義共同的行為

    Windows 10 Rust 1.70.0 ? ?VS Code 1.79.2 這里繼續(xù)沿用上次工程rust-demo Trait定義了一個特定類型所具有的功能,并且可以與其他類型共享。我們可以使用特質(zhì)以抽象的方式來定義共享行為。我們可以使用特質(zhì)的界限來指定一個通用類型可以是任何具有某些行為的類型。? 注意:trait

    2024年02月09日
    瀏覽(26)
  • 從零開始學(xué)習(xí) Java:簡單易懂的入門指南之泛型及set集合(二十二)

    從零開始學(xué)習(xí) Java:簡單易懂的入門指南之泛型及set集合(二十二)

    1.1泛型概述 泛型的介紹 ? 泛型是JDK5中引入的特性,它提供了編譯時類型安全檢測機制 泛型的好處 把運行時期的問題提前到了編譯期間 避免了強制類型轉(zhuǎn)換 泛型的定義格式 類型: 指定一種類型的格式.尖括號里面可以任意書寫,一般只寫一個字母.例如: 類型1,類型2…: 指定多

    2024年02月09日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包