插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是将一个记录插入到已经排好序的有序序列中,从而得到一个新的、记录数增加1的有序序列。
插入排序的具体实现方式是:从无序序列中依次取出记录,将其插入到有序序列中的合适位置,并保持有序序列的顺序不变。
以下是一个简单的插入排序的示例:
输入序列:35,25,42,13,60
第一次排序:
已排好序的子序列:35
无序子序列:25,42,13,60
取出第二个元素25,插入到已排好序的子序列中,在35和25之间插入25:
已排好序的子序列:25,35
无序子序列:42,13,60
第二次排序:
已排好序的子序列:25,35
无序子序列:42,13,60
取出第三个元素42,插入到已排好序的子序列中,在25、35、42之间插入42:
已排好序的子序列:25,35,42
无序子序列:13,60
第三次排序:
已排好序的子序列:13,25,35,42
无序子序列:60
取出第四个元素13,插入到已排好序的子序列中,在25、35、42之前插入13:
已排好序的子序列:13,25,35,42
无序子序列:60
第四次排序:
已排好序的子序列:13,25,35,42,60
无序子序列:无
插入排序的时间复杂度为O(n2),虽然效率不高,但在小数据量的情况下仍然是一种简单有效的排序算法。
答案:由於Insertion Sort是原地排序演算法,因此不需額外的空間。
答案:Insertion Sort的最好情況時間複雜度為O(n),最壞情況時間複雜度為O(n^2)。
答案: 首先,將第一個元素當作已排好序的部分。然後,從第二個元素開始,遍歷整個陣列,每次將當前元素插入到已排好序的部分中的適當位置。插入時,可以倒序遍歷已排好序的部分,找到合適的位置。最終,整個陣列都會被排序。時間複雜度為O(n^2)。
答案: Insertion Sort的最壞情況時間複雜度為O(n^2),但在緊密疊加式整數陣列的情況下,Insertion Sort可以在O(n)的時間內完成排序。
答案: 由於Insertion Sort在最壞情況下的時間複雜度為O(n^2),因此在隨機排列的陣列上,Insertion Sort的平均時間複雜度為O(n^2)。首先,將第一個元素當作已排好序的部分。然後,從第二個元素開始,遍歷整個陣列,每次將當前元素插入到已排好序的部分中的適當位置。插入時,可以倒序遍歷已排好序的部分,找到合適的位置。最終,整個陣列都會被排序。