對於逆序陣列,,選擇排序 和 插入排序 那個更快?

2021-09-07 14:57:17 字數 318 閱讀 2077

插入排序(可以)更快。(不是一定,看插入排序尋找插入位置時所採用的演算法)

選擇排序需要從序列中找到當前最大或最小的值才能進行排序,因此每次都需要與子串行中的全部元素進行比較。

插入排序無需比較子串行全部元素,在逆序情況下,只需要找到當前序列第乙個比自己大或小的元素,將自身插入到其前乙個位置即可。

例如 4,3,2,1 要排序成1,2,3,4

1. 選擇排序,首先比較3次,獲得1,然後比較兩次獲得2,最後比較1次獲得3

2. 插入排序, 首先3比4小插入到4的前面,2比3小插入到3的前面,1比2小插入到2的前面,總共比較三次。此時插入排序的速度更快

對於逆序陣列,,選擇排序 和 插入排序 那個更快?

插入排序 可以 更快。不是一定,看插入排序尋找插入位置時所採用的演算法 選擇排序需要從序列中找到當前最大或最小的值才能進行排序,因此每次都需要與子串行中的全部元素進行比較。插入排序無需比較子串行全部元素,在逆序情況下,只需要找到當前序列第乙個比自己大或小的元素,將自身插入到其前乙個位置即可。例如 4...

插入排序和求逆序數

插入排序的stl版本。include stdafx.h include include include include include include 1.h using namespace std int main int argc,char argv insertionsort a,a 10 模...

選擇排序和插入排序

選擇排序 時間複雜度 o n 2 額外空間複雜度o 1 選擇排序是從陣列的第乙個值即arr 0 開始,先假定當前值為最小值,記下index值,向後遍歷陣列,當 arr i 小於arr index 時,令index i 一直到arr length 1 獲得最小值的index然後與arr 0 交換,此時...