原地排序:空間複雜度是 o(1) 的排序演算法。
氣泡排序:對相鄰的兩個元素進行比較,是否滿**換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作。
插入排序:往乙個有序的陣列裡插入乙個新的資料,插入到應該在位置,繼續保持陣列有序。
陣列中分為已排序的區間和未排序的區間,初始已排序區間只有乙個元素,就是陣列的第乙個元素。插入演算法的核心思想是取未排序區間中的元素,在已排序區間中找到合適的插入位置將其插入,並保證已排序區間資料一直有序。重複這個過程,直到未排序區間中元素為空,演算法結束。
選擇排序:每次會從未排序區間中找到最小的元素,將其放到已排序區間的末尾。選擇排序是一種不穩定的排序演算法,選擇排序每次都要找剩餘未排序元素中的最小值,並和前面的元素交換位置,這樣破壞了穩定性。
同為穩定性排序演算法,時間複雜度也一樣,插入排序的效率比氣泡排序要好,尤其是資料量大的時候,差距更明顯。氣泡排序移動資料的操作更多,只要是小於後乙個元素,就移動一次。所以它的效率低。
func bubblesort(arry int ) int
for i:= 0; i < len(arry)-1; i++} }
return arry
}func insertsort(arr int)
} }fmt.println(arr)
}
Day 8 氣泡排序與選擇排序
1.氣泡排序 第一層迴圈 氣泡排序第一層迴圈的含義為 需要遍歷多次陣列,才能將這個陣列排好序,第一次遍歷,確定乙個最值。第二次遍歷,確定第二個最值。第 len 1 次遍歷,確定第 len 1 最值。len 1 個最值都確定了,自然整個陣列也就排好序了。因此,第一層迴圈含義為 需要遍歷len 1次數組...
氣泡排序與插入排序
氣泡排序 void bubblesort int a,int n if flag 0 注意 1 每一趟通過比較相鄰兩個數的大小,最後實現最大的數放在最後面 插入排序 void insertionsort int a,int n a p temp 注意 1 比如10 9 8,假設手上拿的牌是10,需要...
氣泡排序與插入排序
氣泡排序 bubble sort 也是一種簡單直觀的 排序演算法 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來.這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。插入排序 插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對...