/*
* 堆排序
* 乙個建立堆的函式,乙個排序的函式
* heap初始建堆(大根堆),取得左右孩子中最大的結點,用其和根節點交換,
* 然後以此孩子結點繼續建堆
* heapsort 堆排序,先從非葉節點到跟進行迴圈建堆,交換根節點和最後乙個元素的位置,在迴圈建堆,
* 時間複雜度:主要在於初始化建堆和後來交換後迴圈建堆的過程。
* 迴圈n-1次,每次從根0一直到葉節點是log(n),所以o(nlog(n))
* 初始化建堆為從非葉節點層的最右端乙個結點向上迴圈建堆,2^(i-1)*(k-i) (i為當前層數,k為堆高度) o(n)
* 最好 最壞平均情況都需要迴圈建堆, o(nlogn)
* 空間複雜度:堆排序為原地排序,常量級額外空間 o()
*/
public static void heap(int a,int parent,int len)
a[parent]=temp;
}public static void heapsort(int a)
}
氣泡排序及其時間 空間複雜度解析
1.概念及思路 重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故稱為 氣泡排序 2.實現 include using na...
常用排序及其時間複雜度
1.選擇排序 不穩定,時間複雜度 o n 2 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。2.插入排序 穩定,時間複雜度 o n 2 插入排序的基本思想是,經過i 1遍處理後,...
常用排序及其時間複雜度
1.選擇排序 不穩定,時間複雜度 o n 2 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。2.插入排序 穩定,時間複雜度 o n 2 插入排序的基本思想是,經過i 1遍處理後,...