來個基礎的算法吧——插入排序
插入排序蜡峰,聽名字就是把新的元素插入的已有的集合中,畫個圖來看吧
假設我們有一個待排序數(shù)組 9最筒,12贺氓,100,64床蜘,78辙培,1
我們將數(shù)組分為兩個部分,一個是已經(jīng)排序的部分悄泥,一個是還沒有排序的部分虏冻。
這樣的結(jié)構(gòu) 已排序部分 : null 未排序部分: 9,12弹囚,100厨相,64,78鸥鹉,1
首先我們在未排序的部分中選取第一個元素 9 蛮穿,由于排序部分為空 不需要進行排序操作,直接放進去
已排序部分 9
未排序部分 12 毁渗,100践磅, 64, 78灸异, 1
下面執(zhí)行第二步 再在未排序部分取一個元素 12 放入已排序部分中府适,比較已排序部分的大小,如果比9大肺樟,放在9的右邊檐春;
下一步 在未排序部分再取下一個元素 100 ,放入已排序的部分中么伯,如果比12大 放在12的右邊 疟暖;
下一步 取出64 比100小 比較100左邊的數(shù)12 比12大 放在12的右邊 100的左邊,依次下去直到所有未排序的部分都轉(zhuǎn)移到排序的部分中,當然 這只是理解代碼并不是需要兩個集合的俐巴。
分析一下排序過程骨望,首先我們的變量是需要排序的元素,或者說是這個元素的索引或者說是已經(jīng)排序的元素數(shù)量欣舵,考慮到迭代的思想擎鸠,那么我們的方法應該以 目標索引和數(shù)據(jù)數(shù)組為參數(shù)進行操作,返回值為操作一步后的數(shù)組
插入排序的插入操作
運行過程