假期在家頹廢了好久,終于下決心好好學算法了。。。
用的書 是中文版的 《算法導論》還有劉汝佳的《算法競賽入門經典》
OK 開始第一天的學習
插入排序
對于少量的元素,它是一個有效的算法
偽代碼
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類似與我們打牌時,將手中的牌按大小排好。下標 j 指出正被插入到手中的“當前牌“
下面 用一組數據來表示插入排序
#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;}下面為多組數據#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; }}沒啥區別!!!!!
新聞熱點
疑難解答