0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)單選擇排序算法的流程,代碼,性能等詳細(xì)資料概述

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:未知 ? 作者:易水寒 ? 2018-08-18 10:47 ? 次閱讀

簡(jiǎn)單選擇排序是一種選擇排序。

選擇排序:每趟從待排序的記錄中選出關(guān)鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結(jié)束為止。

簡(jiǎn)單排序處理流程

(1)從待排序序列中,找到關(guān)鍵字最小的元素;

(2)如果最小元素不是待排序序列的第一個(gè)元素,將其和第一個(gè)元素互換;

(3)從余下的 N - 1 個(gè)元素中,找出關(guān)鍵字最小的元素,重復(fù)(1)、(2)步,直到排序結(jié)束。

如圖所示,每趟排序中,將當(dāng)前第 i 小的元素放在位置 i 上。

核心代碼

publicvoidselectionSort(int[]list){//需要遍歷獲得最小值的次數(shù)//要注意一點(diǎn),當(dāng)要排序N個(gè)數(shù),已經(jīng)經(jīng)過N-1次遍歷后,已經(jīng)是有序數(shù)列for(inti=0;ilist[j]){index=j;}}//將找到的第i個(gè)小的數(shù)值放在第i個(gè)位置上temp=list[index];list[index]=list[i];list[i]=temp;System.out.format("第%d趟: ",i+1);printAll(list);}}算法分析

簡(jiǎn)單選擇排序算法的性能

時(shí)間復(fù)雜度

簡(jiǎn)單選擇排序的比較次數(shù)與序列的初始排序無關(guān)。 假設(shè)待排序的序列有 N 個(gè)元素,則比較次數(shù)總是N (N - 1) / 2。

而移動(dòng)次數(shù)與序列的初始排序有關(guān)。當(dāng)序列正序時(shí),移動(dòng)次數(shù)最少,為 0.

當(dāng)序列反序時(shí),移動(dòng)次數(shù)最多,為3N (N - 1) / 2。

所以,綜合以上,簡(jiǎn)單排序的時(shí)間復(fù)雜度為O(N2)。

空間復(fù)雜度

簡(jiǎn)單選擇排序需要占用 1 個(gè)臨時(shí)空間,在交換數(shù)值時(shí)使用。

完整參考代碼

JAVA版本

代碼實(shí)現(xiàn)

1packagenotes.javase.algorithm.sort;23importjava.util.Random;45publicclassSelectionSort{67publicvoidselectionSort(int[]list){8//需要遍歷獲得最小值的次數(shù)9//要注意一點(diǎn),當(dāng)要排序N個(gè)數(shù),已經(jīng)經(jīng)過N-1次遍歷后,已經(jīng)是有序數(shù)列10for(inti=0;ilist[j]){17index=j;18}19}2021//將找到的第i個(gè)小的數(shù)值放在第i個(gè)位置上22temp=list[index];23list[index]=list[i];24list[i]=temp;2526System.out.format("第%d趟: ",i+1);27printAll(list);28}29}3031//打印完整序列32publicvoidprintAll(int[]list){33for(intvalue:list){34System.out.print(value+" ");35}36System.out.println();37}3839publicstaticvoidmain(String[]args){40//初始化一個(gè)隨機(jī)序列41finalintMAX_SIZE=10;42int[]array=newint[MAX_SIZE];43Randomrandom=newRandom();44for(inti=0;i

運(yùn)行結(jié)果

排序前:3528120841第1趟:0528123841第2趟:0128523841第3趟:0118523842第4趟:0112583842第5趟:0112283845第6趟:0112238845第7趟:0112234885第8趟:0112234588第9趟:0112234588排序后:0112234588

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4576

    瀏覽量

    92339
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4695

    瀏覽量

    68081
  • 排序
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    9693

原文標(biāo)題:排序算法總結(jié)(6):簡(jiǎn)單選擇排序

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    調(diào)制解調(diào)器和積分器算法程序的詳細(xì)資料概述

    本文的主要內(nèi)容介紹的是調(diào)制解調(diào)器和積分器算法程序的詳細(xì)資料概述
    發(fā)表于 04-28 10:20 ?11次下載
    調(diào)制解調(diào)器和積分器<b class='flag-5'>算法</b>程序的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    TI的基于DSP兼容的第三方算法協(xié)議的詳細(xì)資料概述

    本文的主要內(nèi)容介紹的是TI的基于DSP兼容的第三方算法協(xié)議的詳細(xì)資料概述
    發(fā)表于 05-07 17:04 ?8次下載
    TI的基于DSP兼容的第三方<b class='flag-5'>算法</b>協(xié)議的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    Stellaris系列產(chǎn)品的選擇詳細(xì)資料概述

    本文的主要內(nèi)容介紹的是TI的產(chǎn)品Stellaris系列產(chǎn)品的選擇詳細(xì)資料概述
    發(fā)表于 05-09 15:59 ?8次下載
    Stellaris系列產(chǎn)品的<b class='flag-5'>選擇</b><b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    9013流水燈的介紹和設(shè)計(jì)詳細(xì)資料概述

    一個(gè)簡(jiǎn)單流水燈9013流水燈的介紹和設(shè)計(jì)詳細(xì)資料概述
    發(fā)表于 06-05 08:00 ?0次下載
    9013流水燈的介紹和設(shè)計(jì)<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    常用的非比較排序算法:計(jì)數(shù)排序,基數(shù)排序,桶排序詳細(xì)資料概述

    這篇文章中我們來探討一下常用的非比較排序算法:計(jì)數(shù)排序,基數(shù)排序,桶排序。在一定條件下,它們的時(shí)間復(fù)雜度可以達(dá)到O(n)。
    的頭像 發(fā)表于 06-18 15:11 ?7037次閱讀
    常用的非比較<b class='flag-5'>排序</b><b class='flag-5'>算法</b>:計(jì)數(shù)<b class='flag-5'>排序</b>,基數(shù)<b class='flag-5'>排序</b>,桶<b class='flag-5'>排序</b>的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    開關(guān)電源的正激變換器基本工作原理及元器件如何選擇詳細(xì)資料概述

    開關(guān)電源的正激變換器基本工作原理及元器件如何選擇詳細(xì)資料概述
    的頭像 發(fā)表于 07-17 19:13 ?1.4w次閱讀
    開關(guān)電源的正激變換器基本工作原理及元器件如何<b class='flag-5'>選擇</b><b class='flag-5'>等</b><b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    PID程序算法詳細(xì)資料概述免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是PID程序算法詳細(xì)資料概述免費(fèi)下載
    發(fā)表于 07-24 08:00 ?36次下載

    SV601187的詳細(xì)資料合集包括了電路圖,原理圖和介紹詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是SV601187的詳細(xì)資料合集包括了電路圖,原理圖和介紹詳細(xì)資料概述
    發(fā)表于 07-30 08:00 ?18次下載
    SV601187的<b class='flag-5'>詳細(xì)資料</b>合集包括了電路圖,原理圖和介紹<b class='flag-5'>等</b><b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    如何使用萬用表簡(jiǎn)單判斷旋轉(zhuǎn)編碼器?的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用萬用表簡(jiǎn)單判斷旋轉(zhuǎn)編碼器?的詳細(xì)資料概述
    發(fā)表于 09-10 08:00 ?15次下載

    幾種c語言程序的排序包括應(yīng)用程序資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是幾種c語言程序的排序包括應(yīng)用程序好資料免費(fèi)下載包括了:堆排序,改進(jìn)冒泡排序,歸并
    發(fā)表于 09-29 08:00 ?6次下載
    幾種c語言程序的<b class='flag-5'>排序</b>包括應(yīng)用程序<b class='flag-5'>等</b><b class='flag-5'>資料</b>免費(fèi)下載

    C語言教程之如何選擇結(jié)構(gòu)程序設(shè)計(jì)的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言教程之如何選擇結(jié)構(gòu)程序設(shè)計(jì)的詳細(xì)資料概述。
    發(fā)表于 11-02 10:53 ?3次下載
    C語言教程之如何<b class='flag-5'>選擇</b>結(jié)構(gòu)程序設(shè)計(jì)的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    數(shù)碼管跑馬燈實(shí)驗(yàn)的目標(biāo)和流程圖及程序的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)碼管跑馬燈實(shí)驗(yàn)的目標(biāo)和流程圖及程序的詳細(xì)資料概述免費(fèi)下載。
    發(fā)表于 11-12 08:00 ?17次下載
    數(shù)碼管跑馬燈實(shí)驗(yàn)的目標(biāo)和<b class='flag-5'>流程</b>圖及程序的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    FPGA視頻教程之FPGA開發(fā)流程詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之FPGA開發(fā)流程詳細(xì)資料概述免費(fèi)下載。
    發(fā)表于 03-01 11:35 ?11次下載
    FPGA視頻教程之FPGA開發(fā)<b class='flag-5'>流程</b>的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    圖論算法及MATLAB程序代碼詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是圖論算法及MATLAB程序代碼詳細(xì)資料說明。
    發(fā)表于 04-23 08:00 ?0次下載
    圖論<b class='flag-5'>算法</b>及MATLAB程序<b class='flag-5'>代碼</b>的<b class='flag-5'>詳細(xì)資料</b>說明

    解析數(shù)據(jù)結(jié)構(gòu)的常用七大排序算法

    為了讓大家掌握多種排序方法的基本思想,本篇文章帶著大家對(duì)數(shù)據(jù)結(jié)構(gòu)的常用七大算法進(jìn)行分析:包括直接插入排序、希爾排序、冒泡排序、快速
    的頭像 發(fā)表于 03-16 08:22 ?1611次閱讀