簡單理解就是類似摸撲克牌的乙個過程
假定有乙個陣列:
int nums = new int;
現在需要把它變為倒序排序。
倒敘排序**如下:
詳細排序過程如下:
第一次比較,由於nums[1]小於nums[0],直接跳到break,結果為
[4, 2, 5, 1, 3, 6]
第二次比較,nums[2]=5大於nums[1]=2, 5和2交換位置,結果為: [4,5, 2, 1, 3, 6],這時由於j的值為1,所以會再執行一次子迴圈,這時nums[1]=5大於nums[0]=4,所以4和5交換位置,這時j的值為0,迴圈終止。結果為
[5, 4, 2, 1, 3, 6]
以此類推。。。
[5, 4, 2, 1, 3, 6]
[5, 4, 3, 2, 1, 6]
[6, 5, 4, 3, 2, 1]
由上述**可以看到,演算法的核心是元素比較和元素交換,因此,演算法的複雜度即為元素比較次數和元素交換次數的總和。
元素比較次數c為:
c=5+4+3+2+1=(n-1)+(n-2)+...+2+1=(1+(n-1)) * ( (n-1)/2 )=(n^2)/2-n/2=(n*(n-1))/2
元素交換次數m為比較次數的三倍:
m=(5+4+3+2+1)*3=((n-1)+(n-2)+...+2+1)*3=3(n^2)/2-3n/2=(3n*(n-1))/2
相加之後的結果s為:
s=(4n*(n-1))/2=2n^2-2n=o(n^2)
插入排序的時間複雜度為o(n^2)
如果覺得文章還可以的話,不妨點個關注吧!!!
資料結構與演算法 插入排序(撲克牌排序)
目錄 實現 複雜度分析 演算法優化 插入排序的 實現雖然沒有氣泡排序和選擇排序那麼簡單粗暴,但它的原理應該是最容易理解的了,因為只要打過撲克牌的人都應該能夠秒懂。插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。有點...
撲克牌排序 趣味撲克牌
一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...
撲克牌排序 tkinter模擬撲克牌和狼人殺發牌
今天我們用tkinter的canvas畫布實現撲克牌的隨機發牌 將54張牌隨機發給四位牌手,在螢幕上顯示每位牌手的牌,利用canvas將發牌結果顯示出來。需要準備的是54張撲克牌的 gif或者png,jpg的話要經過額外的轉換 為了保證最終的牌序是按照由小到大排列的,編號要按照aaaa 2222 k...