有意思的排序算法-插入排序


      所謂排序,無非就是把一個無序的序列排成一個有序的序列,從本文開始,將着重介紹經典的一些排序算法。

      插入排序,是指將待排序列中的數,一個一個插入到適當位置的過程。說起算法的概念來,總是讓人摸不着頭腦,還是從生活中的例子來理解吧。相信每個人都玩過牌,我們在開始摸牌的時候,左手是空的,牌面朝下放到桌子上,接着,一次從桌子上摸起一張牌,並將它插入到左手一把牌中的正確位置上,為了找到這張牌的正確位置,要將它與手中已有的每一張牌從右到左地進行比較,無論什么時候,左手中的牌都是排好序的,而這些牌原先都是桌子上那副牌里最頂上的一些牌。

  於是,根據以上的算法分析,可以寫出以下的Java代碼。

 1 /**
 2      * 插入排序算法
 3      * 
 4      * @param A
 5      *            int數組
 6      * @param isInc
 7      *            是否升序,true為升序,false為降序
 8      */
 9     private void InsertSort(int[] A, boolean isInc) {
10         int len = A.length;
11         int key = 0;
12         int i = 0;
13         for (int j = 1; j < len; j++) {
14             key = A[j];
15             i = j - 1;
16             while (i >= 0 && (isInc ? A[i] > key : A[i] < key)) {
17                 A[i + 1] = A[i];
18                 i = i - 1;
19             }
20             A[i + 1] = key;
21         }
22     }

 

  從算法的機理可以看出,該算法是原地排序的,而且其算法復雜度為O(n2)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM