#è·é»å¥å¦ç¼ç¨ç³»åæç« ä¹æå ¥æåº å¦æä½ æè§é»å¥çæç« å¯¹ä½ æå¸®å©è¯·æèµï¼æ¯ä»å®è´¦å·ï¼[email protected] ## æå ¥æåºç®æ³æè¿° **æå ¥æåºï¼Insertion Sortï¼**æ¯ä¸ç§ç®åç´è§ç[æåºç®æ³](https://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95)ãå®çå·¥ä½åçæ¯éè¿æå»ºæåºåºåï¼å¯¹äºæªæåºæ°æ®ï¼å¨å·²æåºåºåä¸ä»åååæ«æï¼æ¾å°ç¸åºä½ç½®å¹¶æå ¥ã**æå ¥æåº**å¨å®ç°ä¸ï¼é常éç¨in-placeæåºï¼å³åªéç¨å°O(1)çé¢å¤ç©ºé´çæåºï¼ï¼å èå¨ä»åååæ«æè¿ç¨ä¸ï¼éè¦å夿已æåºå ç´ éæ¥ååæªä½ï¼ä¸ºææ°å ç´ æä¾æå ¥ç©ºé´ã ##ç®æ³æè¿° ä¸è¬æ¥è¯´ï¼**æå ¥æåº**é½éç¨in-place卿°ç»ä¸å®ç°ãå ·ä½ç®æ³æè¿°å¦ä¸ï¼ 1. ä»ç¬¬ä¸ä¸ªå ç´ å¼å§ï¼è¯¥å ç´ å¯ä»¥è®¤ä¸ºå·²ç»è¢«æåº 2. ååºä¸ä¸ä¸ªå ç´ ï¼å¨å·²ç»æåºçå ç´ åºåä¸ä»åååæ«æ 3. å¦æè¯¥å ç´ ï¼å·²æåºï¼å¤§äºæ°å ç´ ï¼å°è¯¥å ç´ ç§»å°ä¸ä¸ä½ç½® 4. é夿¥éª¤3ï¼ç´å°æ¾å°å·²æåºçå ç´ å°äºæè çäºæ°å ç´ çä½ç½® 5. å°æ°å ç´ æå ¥å°è¯¥ä½ç½®å 6. é夿¥éª¤2~5 ## ä¸é¢æ¯é»å¥åçpython代ç ågolang代ç ###python æå ¥æåº #coding:utf-8 """ å¦ä½éè¿å¦ä¹ pythonå¦ä¼ç¼ç¨ https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md é»å¥pythonè¿ç¨è§é¢å¹è®ç https://github.com/pythonpeixun/article/blob/master/index.md é»å¥pythonå¹è®è¯çè§é¢ææ¾å°å https://github.com/pythonpeixun/article/blob/master/python_shiping.md å¸®ä½ å®æä»ä¸ä¼å代ç å°ä¼å代ç è§£å³é®é¢çè¿æ¸¡ã å¨è¯¢qq:1465376564 """ def insert_sort(lst): length = len(lst) for i in range(1, length): tmp = lst[i] for j in range(i-1, -1, -1): if lst[j] > tmp: lst[j+1] = lst[j] else: lst[j+1] = tmp break if lst[0] > tmp: lst[0] = tmp if __name__ == '__main__': lst = [8, 2, 4, 1, 9, 20, 15, 6, 0] insert_sort(lst) print(lst) ###golangæå ¥æåºä»£ç package main import ( "fmt" ) func InsertSort(lst []int) { length := len(lst) for i := 1; i < length; i++ { tmp := lst[i] for j := i - 1; j >= 0; j-- { if lst[j] > tmp { lst[j+1] = lst[j] } else { lst[j+1] = tmp break } } // è¿ä¸ªå°æ¹æç¹å°æå·§ï¼å 为golang ä¸jæ¯for循ç¯ä½ç¨åï¼æä»¥ // ç´æ¥å¤æç¬¬ä¸ä¸ªå ç´ if lst[0] > tmp { lst[0] = tmp } } } func main() { lst := []int{3, 8, 2, 9, 7, 12, 33, 6, 97, 48, 23} InsertSort(lst) fmt.Println(lst) } ##cè¯è¨ä»£ç void insertion_sort(int arr[], int len) { int i, j; int temp; for (i = 1; i < len; i++) { temp = arr[i]; //èå·²æåºçæ¸é䏿¯è¼ï¼å¤§æ¼tempæï¼è©²æ¸åå¾ç§» for (j = i - 1; j >= 0 && arr[j] > temp; j--) //j循ç¯å°-1æ¶ï¼ç±äºçè·¯æ±å¼ï¼ä¸ä¼è¿ç®array[-1] arr[j + 1] = arr[j]; arr[j+1] = temp; //被æåºæ°æ¾å°æ£ç¡®çä½ç½® } } ##python å ¶å®ç2ä¸ªçæ¬ def insertion_sort(n): if len(n) == 1: return n b = insertion_sort(n[1:]) m = len(b) for i in range(m): if n[0] <= b[i]: return b[:i]+[n[0]]+b[i:] return b + [n[0]] def insertion_sort(lst): if len(lst) == 1: return for i in xrange(1, len(lst)): temp = lst[i] j = i - 1 while j >= 0 and temp < lst[j]: lst[j + 1] = lst[j] j -= 1 lst[j + 1] = temp ##ç®æ³å¤æåº¦ å¦æç®æ æ¯æn个å ç´ çåºåååºæåï¼é£ä¹éç¨**æå ¥æåº**å卿好æ åµåæåæ åµãæå¥½æ åµå°±æ¯ï¼åºåå·²ç»æ¯ååºæåäºï¼å¨è¿ç§æ åµä¸ï¼éè¦è¿è¡çæ¯è¾æä½é*(n-1)*次å³å¯ãæåæ åµå°±æ¯ï¼åºåæ¯éåºæåï¼é£ä¹æ¤æ¶éè¦è¿è¡çæ¯è¾å ±æ*n(n-1)/2*次ã**æå ¥æåº**çèµå¼æä½æ¯æ¯è¾æä½ç次æ°åå»*(n-1)*次ãå¹³åæ¥è¯´**æå ¥æåº**ç®æ³å¤æåº¦ä¸º**O(n2)**ãå èï¼**æå ¥æåº**ä¸éåå¯¹äºæ°æ®éæ¯è¾å¤§çæåºåºç¨ã使¯ï¼å¦æéè¦æåºçæ°æ®éå¾å°ï¼ä¾å¦ï¼é级å°äºåï¼é£ä¹**æå ¥æåº**è¿æ¯ä¸ä¸ªä¸éçéæ©ã æå ¥æåºå¨å·¥ä¸çº§åºä¸ä¹æç广æ³çåºç¨ï¼å¨STLçsortç®æ³åstdlibçqsortç®æ³ä¸ï¼é½å°æå ¥æåºä½ä¸ºå¿«éæåºçè¡¥å ï¼ç¨äºå°éå ç´ çæåºï¼é常为8个æä»¥ä¸ï¼ã [ç¹å»é»å¥pythonå¹è®è¯çè§é¢ææ¾å°å](https://github.com/pythonpeixun/article/blob/master/python_shiping.md) [é»å¥pythonè¿ç¨è§é¢å¹è®ç](https://github.com/pythonpeixun/article/blob/master/index.md) æ³¨ï¼æåèµæºæ¥æºäºç»´åºç¾ç§