十大經(jīng)典排序算法總結(jié)(選擇排序)

寫在前面

  • 樓主整理經(jīng)典的排序算法
  • 記錄學(xué)習(xí)

1. 選擇排序(Selection Sort)

1.1 概念

選擇排序 是表現(xiàn)最穩(wěn)定的排序算法之一 ,因?yàn)闊o(wú)論什么數(shù)據(jù)進(jìn)去都是O(n2)的時(shí)間復(fù)雜度 ,所以用到它的時(shí)候,數(shù)據(jù)規(guī)模越小越好。唯一的好處可能就是不占用額外的內(nèi)存空間了吧。

選擇排序(Selection-sort) 是一種簡(jiǎn)單直觀的排序算法。

1.2 算法描述

它的工作原理:

  • 首先在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置

  • 然后,再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。

  • 以此類推,直到所有元素均排序完畢。

示意圖

1.3 代碼演示

package com.zhuang.algorithm;

/**
 * @Classname SelectionSort
 * @Description 選擇排序
 * @Date 2021/6/13 14:44
 * @Created by dell
 */

public class SelectionSort {
    public static void main(String[] args) {
        int[] arr =new int[]{0,5,6,1,8,2};
        selectionSort(arr);
        System.out.println(Arrays.toString(arr));//[0, 1, 2, 5, 6, 8]
    }
    public static void selectionSort(int[] arr){
        int temp,min=0;
        for (int i = 0; i < arr.length-1; i++) {
            min=i;
            //循環(huán)查找最小值
            for (int j = i+1; j < arr.length; j++) {
                if (arr[min]>arr[j]) {
                    min = j;
                }
            }
            if (min!=i){
                temp=arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
    }
}

1.4 算法分析

  • 最佳情況:T(n) = O(n2)
  • 最差情況:T(n) = O(n2)
  • 平均情況:T(n) = O(n2)

1.5 穩(wěn)定性

用數(shù)組實(shí)現(xiàn)的選擇排序是不穩(wěn)定的,用鏈表實(shí)現(xiàn)的選擇排序是穩(wěn)定的。不過(guò),一般提到排序算法時(shí),大家往往會(huì)默認(rèn)是數(shù)組實(shí)現(xiàn),所以選擇排序是不穩(wěn)定的。

1.6 適用場(chǎng)景

由于在各種情況下復(fù)雜度波動(dòng)小,因此一般是優(yōu)于冒泡排序的。在所有的完全交換排序中,選擇排序也是比較不錯(cuò)的一種算法。但是,由于固有的O(n2)復(fù)雜度,選擇排序在海量數(shù)據(jù)面前顯得力不從心。因此,它適用于簡(jiǎn)單數(shù)據(jù)排序。

寫在最后

  • 學(xué)習(xí)階段,描述不當(dāng)?shù)胤?,還請(qǐng)大家在評(píng)論區(qū)指出
  • 繼續(xù)加油!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容