折半查找-递归
#include<bits/stdc++.h> using namespace std; int data[100]; int Search(int low,int high,int k) { if(low>high) return 0; else { int mid=(low+high)/2; if(k<data[mid]) return Search(low,mid-1,k); else if(k>data[mid]) return Search(mid+1,high,k); else return mid; } } int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>data[i]; int k; cin>>k; Search(1,n,k); int z=Search(1,n,k); if(z==0) cout<<"no answer"<<endl; else cout<<z<<endl; }
插入排序
#include<bits/stdc++.h> using namespace std; int main() { int m, a[100]; cin>>m; for(int i=0;i<m;i++) cin>>a[i]; for(int i=1;i<m;i++) { for(int j=0;j<m-i;j++) { if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i<m;i++) cout<<a[i]<<" "; }
选择排序
#include<bits/stdc++.h> using namespace std; int main() { int m, a[100]; cin>>m; for(int i=0;i<m;i++) cin>>a[i]; for(int i=1;i<m;i++) { for(int j=0;j<m-i;j++) { if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i<m;i++) cout<<a[i]<<" "; }
快速排序
#include<bits/stdc++.h> using namespace std; int main() { int m, a[100]; cin>>m; for(int i=0;i<m;i++) cin>>a[i]; for(int i=1;i<m;i++) { for(int j=0;j<m-i;j++) { if(a[j]<a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i<m;i++) cout<<a[i]<<" "; }
归并排序
#include<bits/stdc++.h> using namespace std; int main() { int m, a[100]; cin>>m; for(int i=0;i<m;i++) cin>>a[i]; for(int i=1;i<m;i++) { for(int j=0;j<m-i;j++) { if(a[j]<a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i<m;i++) cout<<a[i]<<" "; }