插入排序(insertion sort)的基本思想:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排序好的序列中,直到全部記錄插入完成為止.
直接插入排序
基本思想
假設待排序的記錄存放在陣列r[1..n]中。初始時,r[1]自成1個有序區,無序區為r[2..n].從i = 2起直到i = n 為止,依次將r[i]插入當前的有序區r[1..i - 1]中,生成含n個記錄的有序區.
排序方法
將待插入記錄r[i]的關鍵字從右向左依次與有序區中記錄r[j](j=i - 1, i - 2, ....,1)的關鍵字比較:
若r[j]的關鍵字大於r[i]的關鍵字,則將r[j]後移乙個位置
若r[j]的關鍵字小於或等於r[i]的關鍵字,則查詢過程結束,j + 1即為r[i]插入位置
關鍵字比r[i]的關鍵字大的記錄均已後移,所以j + 1的位置已經騰空,只要將r[i]直接插入到此位置即可完成一趟直接插入排序。
時間複雜度:o(n*n)
**:#include using namespace std;
#define maxn 100
int a[maxn + 1]; //全域性變數存陣列
int main()
int len=i;//陣列有效長度
for(i=1;i=0;j--)
else
}a[j+1]=temp;
} cout<<"排序後的資料是:"<
插入排序法
插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。為了排序方便,我們...
插入排序法
插入排序法 按照比較和插入來實現的。在待排序的元素中,假設前面n 1 其中n 2 個數已經是排好順序的,現將第n個數插到前面已經排好的序列中,然後找到合適自己的位置,使得插入第n個數的這個序列也是排好順序的。按照此法對所有元素進行插入,直到整個序列排為有序的過程,稱為插入排序。類似於打牌的過程中,從...
插入排序法
這個應該是最基礎的演算法了,一直懶得寫,今天搞一下。其實就是先把大的牌往右邊移動,然後再把當前牌插入到前面即可,需要注意的是,不要用在陣列連續賦值,很容易出錯。還是老實點好。define crt secure no warnings include include include include t...