很多的算法的基本條件都是對(duì)有序數(shù)據(jù)進(jìn)行操作,最簡單的例子就是昨天講到的二分查找。在實(shí)際生活中,并不是所有的數(shù)據(jù)都是有序的,很多數(shù)據(jù)需要我們先進(jìn)行排序再進(jìn)行下一步的操作。
今天要說的是選擇排序selectionSort。
選擇排序簡單說就是,每次比較所有的元素,選出最大或者最小的元素。
打個(gè)比方,0-9共有10個(gè)元素,你想要確定最小的元素是誰,怎么做呢?你需要用把所有的元素看一遍,選出最小的,次數(shù)為10;如何找第二小的元素呢?再次遍歷,次數(shù)為9,依次876......總的運(yùn)行次數(shù)就是1/2*(n+1)n但是為什么查資料看到的時(shí)間復(fù)雜度都是O(n^2)呢?這是因?yàn)镺表示法通常省略常數(shù)。
不知道關(guān)于選擇排序說清楚了沒有,沒有的話看具體的代碼實(shí)現(xiàn),我分別作了降序和升序的實(shí)現(xiàn),如下。

