一、冒泡排序

1、算法描述和具體實(shí)現(xiàn)
大致流程描述:
(1)比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換它們兩個(gè);
(2)每次遍歷結(jié)束,能夠找到該次遍歷過的元素中的最大值
(3)如果還有沒排序過的元素,繼續(xù)(1)
代碼實(shí)現(xiàn):

tips:一種原地排序算法,穩(wěn)定排序算法。
有優(yōu)化空間,主要從兩方面進(jìn)行優(yōu)化:
①減少外層遍歷次數(shù)
②讓每次遍歷能找到兩個(gè)極值
平均時(shí)間復(fù)雜度:O(n^2)
空間復(fù)雜度: O(1)
穩(wěn)定性:穩(wěn)定
二、選擇排序
找到數(shù)組中的最?。ù螅┲担⑵浞诺降谝晃?,然后找到第二小的值放到第二位……以此類推。
大致流程描述:
(1)取出未排序部分的第一個(gè)元素,遍歷該元素之后的部分并比較大小。對于第一次遍歷,就是取出第一個(gè)元素
(2)如果有更小的,與該元素交換位置
(3)每次遍歷都能找出剩余元素中的最小值并放在已排序部分的最后
代碼實(shí)現(xiàn):

tips:一種原地排序算法,不穩(wěn)定排序算法。
平均時(shí)間復(fù)雜度:O(n^2)
空間復(fù)雜度: O(1)
穩(wěn)定性:不穩(wěn)定
三、插入排序
直接插入排序
它的基本思想是: 將待排序的元素按照大小順序, 依次插入到一個(gè)已經(jīng)排好序的數(shù)組之中, 直到所有的元素都插入進(jìn)去.
大致流程:
(1)取未排序部分的第一個(gè)元素。第一次遍歷時(shí),將第一個(gè)元素作為已排序元素,從第二個(gè)元素開始取
(2)遍歷前面的已排序元素,并與這個(gè)未排序元素比較大小,找到合適的位置插入
(3)繼續(xù)執(zhí)行(1)
代碼實(shí)現(xiàn):

tips:一種原地排序算法,穩(wěn)定排序算法。
平均時(shí)間復(fù)雜度:O(n^2)
空間復(fù)雜度: O(1)
穩(wěn)定性:穩(wěn)定