很多的算法的基本條件都是對有序數(shù)據(jù)進行操作拴孤,最簡單的例子就是昨天講到的二分查找洒琢。在實際生活中歧蒋,并不是所有的數(shù)據(jù)都是有序的孵坚,很多數(shù)據(jù)需要我們先進行排序再進行下一步的操作李皇。
今天要說的是選擇排序selectionSort精算。
選擇排序簡單說就是蒙谓,每次比較所有的元素剥啤,選出最大或者最小的元素芝雪。
打個比方减余,0-9共有10個元素,你想要確定最小的元素是誰惩系,怎么做呢位岔?你需要用把所有的元素看一遍,選出最小的堡牡,次數(shù)為10抒抬;如何找第二小的元素呢?再次遍歷晤柄,次數(shù)為9擦剑,依次876......總的運行次數(shù)就是1/2*(n+1)n但是為什么查資料看到的時間復雜度都是O(n^2)呢?這是因為O表示法通常省略常數(shù)。
不知道關于選擇排序說清楚了沒有惠勒,沒有的話看具體的代碼實現(xiàn)赚抡,我分別作了降序和升序的實現(xiàn),如下捉撮。