日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
面試官:說說你對(duì)選擇排序的理解?如何實(shí)現(xiàn)?應(yīng)用場(chǎng)景?

本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。

平陸網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

一、是什么

選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法,無(wú)論什么數(shù)據(jù)進(jìn)去都是 O(n2)的時(shí)間復(fù)雜度,所以用到它的時(shí)候,數(shù)據(jù)規(guī)模越小越好

其基本思想是:首先在未排序的數(shù)列中找到最小(or最大)元素,然后將其存放到數(shù)列的起始位置

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

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

舉個(gè)例子,一個(gè)數(shù)組為 56、12、80、91、29,其排序過程如下:

  • 第一次遍歷時(shí),從下標(biāo)為 1 的位置即 56 開始,找出關(guān)鍵字值最小的記錄 12,同下標(biāo)為 0 的關(guān)鍵字 56 交換位置。此時(shí)數(shù)組為 12、56、80、91、20

  • 第二次遍歷時(shí),從下標(biāo)為 2 的位置即 56 開始,找出最小值 20,同下標(biāo)為 2 的關(guān)鍵字 56 互換位置,此時(shí)數(shù)組為12、20、80、91、56

  • 第三次遍歷時(shí),從下標(biāo)為 3 的位置即 80 開始,找出最小值 56,同下標(biāo)為 3 的關(guān)鍵字 80 互換位置,此時(shí)數(shù)組為 12、20、56、91、80

第四次遍歷時(shí),從下標(biāo)為 4 的位置即 91 開始,找出最小是 80,同下標(biāo)為 4 的關(guān)鍵字 91 互換位置,此時(shí)排序完成,變成有序數(shù)組

二、如何實(shí)現(xiàn)

從上面可以看到,對(duì)于具有 n 個(gè)記錄的無(wú)序表遍歷 n-1 次,第i 次從無(wú)序表中第 i 個(gè)記錄開始,找出后序關(guān)鍵字中最小的記錄,然后放置在第 i 的位置上

直至到從第n個(gè)和第n-1個(gè)元素中選出最小的放在第n-1個(gè)位置

如下動(dòng)畫所示:

用代碼表示則如下:

 
 
 
 
  1. function selectionSort(arr) { 
  2.     var len = arr.length; 
  3.     var minIndex, temp; 
  4.     for (var i = 0; i < len - 1; i++) { 
  5.         minIndex = i; 
  6.         for (var j = i + 1; j < len; j++) { 
  7.             if (arr[j] < arr[minIndex]) {     // 尋找最小的數(shù) 
  8.                 minIndex = j;                 // 將最小數(shù)的索引保存 
  9.             } 
  10.         } 
  11.         temp = arr[i]; 
  12.         arr[i] = arr[minIndex]; 
  13.         arr[minIndex] = temp; 
  14.     } 
  15.     return arr; 

第一次內(nèi)循環(huán)比較N - 1次,然后是N-2次,N-3次,……,最后一次內(nèi)循環(huán)比較1次 共比較的次數(shù)是 (N - 1) + (N - 2) + ... + 1,求等差數(shù)列和,得 (N - 1 + 1)* N / 2 = N^2 / 2,舍去最高項(xiàng)系數(shù),其時(shí)間復(fù)雜度為 O(N^2)

從上述也可以看到,選擇排序是一種穩(wěn)定的排序

三、應(yīng)用場(chǎng)景

和冒泡排序一致,相比其它排序算法,這也是一個(gè)相對(duì)較高的時(shí)間復(fù)雜度,一般情況不推薦使用

但是我們還是要掌握冒泡排序的思想及實(shí)現(xiàn),這對(duì)于我們的算法思維是有很大幫助的

參考文獻(xiàn)

https://baike.baidu.com/item/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F/9762418

https://zhuanlan.zhihu.com/p/29889599

http://data.biancheng.net/view/72.html

https://leetcode-cn.com/problems/sort-an-array/solution/shi-er-chong-pai-xu-suan-fa-bao-ni-man-yi-dai-gift/


網(wǎng)站名稱:面試官:說說你對(duì)選擇排序的理解?如何實(shí)現(xiàn)?應(yīng)用場(chǎng)景?
地址分享:http://m.5511xx.com/article/djjjoch.html