關於幾種排序演算法的時間效能比較

2021-08-25 12:04:14 字數 1565 閱讀 6253

以前經常看到各種排序演算法,今天也對以下6種排序演算法的時間效能做了一次測試:

測試**位址

1. 氣泡排序 o(n^2)
/**

氣泡排序

@param arr 整形切片

*/func bubblesort(arr int) }}

}

2. 插入排序 o(n^2)
/**

插入排序

@param arr 整形切片

*/func insertsort(arr int)

}}

3. 選擇排序 o(n^2)
/**

選擇排序

@param arr 整形切片

*/func selectsort(arr int)

}if index != i

}}

4. 希爾排序 o(nlogn)
/**

希爾排序 o(nlogn)

@param arr 整形切片

*/func shellsort(arr int) }}

}

5. 快速排序 :o(nlogn)期望時間,o(n^2)最壞情況;對於大的、隨機數列表一般相信是最快的已知排序
/**

快速排序

@param arr 整形切片

*/func quicksort(arr int, low, high int)

first, last := low, high

key := arr[first]

for first < last

arr[first] = arr[last]

for first < last && arr[first] <= key

arr[last] = arr[first]

}arr[first] = key

quicksort(arr, low, first-1)

quicksort(arr, first+1, high)

}

6. 堆排序 o(nlogn)
/**

堆排序 o(nlogn)

@param arr 整形切片

*/func heapsort(arr int)

for i := length -1; i >=0; i--

}func sort(arr int, start, end int)

if son+1

< end && arr[son] < arr[son+1]

if arr[son] > arr[dad]

}

測試過程: 統計時間 = 產生隨機數時間 + 排序時間
1. 在隨機數情況下,表現最差的是冒泡,表現最好的是快速排序

2. 在隨機數1000萬的時候。氣泡排序、插入排序和選擇排序排序時間未知。等了好幾分鐘都沒有結果。快速排序表現最好。

總得來說,在隨機序列的情況,快速排序表現最好

各種排序演算法的時間效能比較

include include using namespace std 氣泡排序 原理 1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面...

幾種toString的效能比較

最近要寫乙個批量的介面,由於一次請求的量比較大,所以很多小的點不得不好好考慮效能。乙個object的tostring操作,也是乙個效能考慮點,故自己做了乙個測試,比較了一下可能的幾種tostring的方式。public static void main string args long endtim...

《面試之排序演算法效能比較》

效能穩定 平均時間複雜度為 o nlogn 最好時間複雜度為 o nlogn 最壞時間複雜度為 o nlogn 核心思想 1 分 只要可以分,就可以將list中的元素分成兩半,直到不能分則跳出 2 比 對於傳入兩個list,則要比較排序,則為了提高效率,輸入為有序list,3 合 對於輸入兩個有序的...