無論是c語言相關書籍還是演算法等等,很多種書籍上都有介紹排序演算法,而排序演算法重要的在於它的思想,這也是乙個程式的靈魂,相信大家也早都知道。在此,我簡單介紹一下插入排序法的基本思想,以供一些初學者及掌握不深的學習人員作乙個參考。
其中,插入排序法的核心思想是:
通過while的迴圈判斷語句,從第二個數字開始,逐個向前乙個數字對比,比較大小,若前兩個按從小到大順序排好後,第三個與前兩個通過while判斷,若大於前乙個,則向前插乙個位置,也可以理解為與前乙個數字交換,交換後再繼續與前乙個數字比較,直到前乙個數字比它小為止,停止比較。通過for語句,跳到下乙個數字,繼續前插迴圈比較。
#includeusing namespace std;
#define n 10
void insertsort(int *a, int n)
a[j+1] = temp; //將後乙個記住的數賦給前乙個數 }}
int main()
insertsort(arr, n);
for (i = 0; i < n; i++)
return 0;
}
其中,**部分的while中必須利用temp來作為與前乙個數比較的數字,若仍用a[i]來比較,則會出錯,因為a[i]經過while比較賦值的過程已不再是原來的數字,這樣便會出錯。這是初學者容易出錯的地方。也是我個人曾經犯過的錯誤。在此,希望能夠給廣大學習排序的學習者們給予幫助。
排序演算法之簡單插入排序法
對於初學者來說,排序演算法是c語言學習的乙個重點和難點,我就來分享一下我的學習心得吧!排序演算法有3類 1 交換類排序法。包括氣泡排序和快速排序 2 插入類排序法。包括簡單插入排序和希爾排序 3 選擇類排序法。包括簡單選擇排序和堆排序 這一篇我先講一講簡單插入排序法吧。簡單插入排序法 把n個待排序的...
排序演算法 一 插入排序法 折半插入排序法
約定 假設資料中有n個資料元素 關鍵字 排列演算法中,將序列中各關鍵字值依次存放於型別為keytype的陣列元素k 1 k 2 k 3 k n 中。排序結果按照資料元素 關鍵字 值的大小,從小到大排序。核心思想 第 i 趟排序將序列中第 i 1 個元素 ki 1 i 1,2,n 1 插入到乙個已經按...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...