插入排序的基本思想是遍歷每乙個元素,當遍歷到第n個元素是,前面n-1個元素是排序好的,此時在前面選擇合適的位置,將第n個元素插入,是穩定排序,時間複雜度是o(n^2);
#include#include#include#includeusing namespace std;
//插入排序
void insertsort(vector&nums, int low, int high)
int pos = j;//表示待插入元素要插入的位置;
int temp = nums[i];//儲存當前待插入元素;
while (j < i)//這裡是將比當前待插入元素值大的元素往後移,注意移動方向一定是從後往前,否則會被覆蓋;
nums[pos] = temp;//將帶插入元素插入到相應的位置; }}
int main()
; insertsort(nums,0,nums.size());
return 0;
}
演算法複習 插入排序
原理都很清楚 讓看起來很簡單,但是實現的時候,也需要思考一些細節。二分法的插入排序關鍵在於插入位置的下標。void insertsort int arr,int n insert arr i to index t int tmp arr i for int j i j t j arr t tmp 其...
複習 排序之插入排序
插入排序是穩定的排序演算法。插入排序有點類似與抓撲克牌,比如在玩鬥地主,你在玩手機,然後將牌背面朝上乙個乙個的疊起來,抓完牌,手機放下了,這時就要一張一張的往手上遞牌,然後會以第一張為基準,然後大於第一張就插左邊,小於就插右邊,插排也是這樣的。遍歷陣列list,讓基數為list i 然後如果找到比這...
演算法基礎之排序 插入排序
排序演算法是演算法基礎中最常見也是最應該掌握的演算法。插入排序的想法,和我們玩撲克牌起牌相似。從左手為空開始,撲克牌背面朝上至於桌上,每次從桌面上摸一張牌,並將其插入到左手正確的位置,使得左手中的牌是有序的。為了找到這張牌的正確插入位置,從右到左逐一比較左手中的牌。當摸完桌上的牌時,左手中的牌就是排...