插入排序演算法基本思路大體一樣,都是往有序的序列裡面插入新的元素。
查詢插入位置------移動元素----插入新元素。根據查詢的方式不同,可以分為直接插入排序和二分插入排序。
直接插入排序
直接插入排序演算法是,將待插入的新元素,直接和有序序列中的元素挨個比較,找到插入位置,然後插入。
以下是示例**,lenth:是待排序序列長度,這裡用的是int型別的陣列作為待排序序列作為演示。
void directsort(int *pnarr, int
length)
pnarr[j+1] = ntmp; // 插入元素
}}
二分查詢插入排序
二分查詢排序演算法和直接插入排序思路一樣,除了查詢方式變成二分法查詢,其他的一樣,都需要找到插入位置以後,移動相應的元素,然後插入。
以下是二分查詢插入排序的示例**。
void bisearchsort(int *pnarr, int
length)
else
}for (int j=i-1; j>=nlow; j--)
pnarr[nlow] = ntmp; // 插入元素
}}
簡單測試**,如下。
int main()
; //directsort(s, length);
bisearchsort(s, length);
for(int i=0; istd::cout
<< s[i] << std::endl;
}return
0;}
之後有時間再詳細更新吧,如果可以的話加上說明 插入排序演算法
插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...
演算法 插入排序
include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...
插入排序演算法
下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...