假期在家頹廢了好久,終于下決心好好學(xué)算法了。。。
用的書(shū) 是中文版的 《算法導(dǎo)論》還有劉汝佳的《算法競(jìng)賽入門(mén)經(jīng)典》
OK 開(kāi)始第一天的學(xué)習(xí)
插入排序
對(duì)于少量的元素,它是一個(gè)有效的算法
偽代碼
INSERT-INTO(A) for j = 2 to j = A.length key = A[j] i = j - 1 while i >0 and A[i] > key A[i+1] = a[i] i = i -1 A[i+1] = key類(lèi)似與我們打牌時(shí),將手中的牌按大小排好。下標(biāo) j 指出正被插入到手中的“當(dāng)前牌“
下面 用一組數(shù)據(jù)來(lái)表示插入排序
#include<iostream>using namespace std;int main(){ int a[] = {5,1,3,4,2,7,9,8,6}; int i,j; for(j=1;j<9;j++){ int key = a[j]; i=j-1; while(i>=0&&a[i]>key){ a[i+1] = a[i]; i-=1; } a[i+1] = key; } for(int i=0;i<9;i++){ cout<<a[i]<<" "; } return 0;}下面為多組數(shù)據(jù)#include<iostream>using namespace std;const int MAXX = 999;void insert_into(int a[],int n);int main(){ int n; int a[MAXX]; while(cin>>n){ for(int i=0;i<n;i++){ cin>>a[i]; } insert_into(a,n); for(int i=0;i<n;i++){ cout<<a[i]<<" "; } cout<<endl; } return 0;}void insert_into(int a[],int n){ int i,j; for(j=1;j<n;j++){ int key = a[j]; i = j-1; while(i>=0&&a[i]>key){ a[i+1] = a[i]; i = i-1; } a[i+1] = key; }}沒(méi)啥區(qū)別!!!!!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注