直接插入排序
思路分析:在一個有序的數組中為要插入的元素找到指定的插入位置,但這個位置並不一定是最后排序結果中對應元素的最終位置。
時間復雜度:最壞情況(整個序列逆序時)時間復雜度為O(n2),最優情況(整個序列初始順序,從大到小時)時間復雜度為O(n),平均情況時間復雜度為O(n2)。
源代碼:
void InsertSort(int R[],int n)
{
int i,j,temp;
for(i=1;i<n;i++) //插入排序共需要插入n個元素,但此處我們默認序列中存在R[0]這個元素,故之后需進行n-1次插入操作
{
temp=R[i];
j=i-1;
while(j>=0&&temp<R[j]) //比插入元素大的元素進行后移操作
{
R[j+1]=R[j];
--j;
}
R[j+1]=temp; //插入要插入的元素
}
}