算法學習之算法導論理解

算法是學習程序開發必不可少的一環。我們不僅僅能去用好,而且更重要的是理解,變成自己的東西纔是根本。

算法導論 第2章 算法基礎

2.1 插入排序

概念:插入排序是將一個數據插入到一個已經排好序的有序數據中.簡單來說就是帶排序的數據插入有序數據中。
時間複雜度:O(n^2)

僞代碼:
這裏寫圖片描述
按照僞代碼提示,
1.for循環從數據A的第二個元素開始到數據長度最後一個元素截止
2.把數組j位置對應的值賦值給中間變量key
3.//
4.把變量j-1賦給變量i(i就是j的前一個變數)
5.while 循環 條件:如果i>0並且A[i]>key
執行{
6. A[i+1]=A[i];//把i+1 對應位置的值替換爲A[i]
7. i–;//i自減
}
8. A[i+1]=key//把i+1位置對應值替換爲key值

如果按照僞代碼直接用永遠得不到正確答案 爲什麼呢?
我們都知道數組元素的下標爲最小爲0,所以代碼需要改成如下:

  for (int j = 1; j < A.length; j++) {

            String key = A[j];

            int i = j-1;

            while (i>-1&&Integer.valueOf(A[i])>Integer.valueOf(key)){
                A[i+1] = A[i];
                i--;

            }

            A[i+1] = key;

        }

大家可能疑惑 while在此處有什麼作用?

while作用就是如果條件成立 i+1對應着替換爲i當前值
i自減直到i=-1時退出while循環 然後剩下的第i+1位值替換爲key
簡單講就是值移位加排序。

發佈了57 篇原創文章 · 獲贊 19 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章