【總結】經典排序演算法
阿新 • • 發佈:2018-12-17
最近在學習演算法,趁這個機會總結一些演算法。慢慢更新,歡迎交流探討。
參考書籍:《演算法導論》
排序:
輸入:n個數
輸出:有序(從大到小、從小到大)序列
一、插入排序
做排序的都需要做遍歷,而插入排序,顧名思義,就是插隊。
不必多說,給個案例體會一下:
輸入:5 4 3 2 1
處理:
- 4 5 3 2 1
- 3 4 5 2 1
- 2 3 4 5 1
- 1 2 3 4 5
輸出:1 2 3 4 5
輸入:6 8 2 4 5
處理:
- 6 8 2 4 5
- 2 6 8 4 5
- 2 4 6 8 5
- 2 4 5 6 8
程式碼如下:
#include<iostream> #include<string.h> using namespace std; int main() { int n,key,i,j,a[100]; while (cin>>n,n!=0) { for(int i=0;i<n;i++) cin>>a[i]; for(int j=1;j<n;j++) { key=a[j]; for(i=j-1;i>=0&&a[i]>key;i--) a[i+1]=a[i]; a[i+1]=key; } for(int k=0;k<n;k++) { cout<<a[k]<<" "; } cout<<endl; } }