直接插入排序的四種實現方法

2021-06-26 02:05:51 字數 896 閱讀 8789

插入排序思想:預設第乙個元素為有序序列,從第二位開始取數,每取一位,插入到前面已經排好序的序列中,直到全部取完為止。

相應的**實現如下:

#include using namespace std;

int main()

}for(i = 0 ; i < n ; i++)

cout <

對於上面的演算法,可以對其進行相應的簡化:

#include using namespace std;

int main()

a[j+1] = temp ;

}for(i = 0 ; i < n ; i++)

cout <

從上面的思想中我們可以發現,我們只是預設第乙個元素為有序序列,如果一共十個數,前八個都是有序排列,我們就可以直接把後兩個插入到前面有序序列中即可,很顯然上面的演算法時間複雜度較高,我們可以對其進行優化,分析如下:

相應**實現如下:

#include using namespace std;

int main()

for(i = 0 ; i < n ; i++)

cout <

下面介紹一種對將a[j] 插入到前面有序序列方法進行改寫,用資料交換代替資料後移:

#include using namespace std;

int main()

for(i = 0 ; i < n ; i++)

cout <

直接插入排序

直接插入排序是一種最簡單的排序方法,它的基本思想是依次將每個記錄插入到乙個有序中去。就是說,第i i 1 遍整理時,a1,a2,ai 1已經是排好序的子串行 取出第i個元素ai,在已排好序的子串行為ai找到乙個合適的位置,並將它插到該位置上。易知上述排序當i 1時實際上為空操作,故可直接從i 2開始...

直接插入排序

直接插入排序的演算法思想 直接插入排序 straight insertion sort 的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的 記錄數增 1 的有序表。根據該思想,編寫 如下 從已有序列的第0個記錄開始比較 public static void insertsort1 i...

直接插入排序

源文章url http student.zjzk.cn course ware data structure web paixu paixu8.2.1.1.htm 做過部分修改。1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至...