1.选择排序
每一次找出最小的值,放在最前面的位置,一个一个安置
//选择排序 #include<iostream> #include<climits> using namespace std; template<class T> void gcd(T a[],int n){ int mix,temp; for(int i=0;i<n-1;i++){ mix=i; for(int j=i+1;j<n;j++) if(a[j]<a[mix]) mix=j; if(i!=mix){ temp=a[i]; a[i]=a[mix]; a[mix]=temp; } } } int main() { int a[10] = {43, 65, 4, 23, 6, 98, 2, 65, 7, 79}; gcd(a,10); for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; }
2.冒泡排序
遍历数组,发现前面的数字大于自己就换位置
//冒泡排序 #include<iostream> using namespace std; void swap(int &a,int &b ){ int tmp; tmp=a; a=b; b=tmp; } void gcd(int *a,int n){ for(int i=0;i<n;i++) for(int j=0;j<n-1;j++){ if(a[j]>a[j+1]) swap(a[j],a[j+1]); } } int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; gcd(a,n); for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; }
3.插入排序
遍历数组,新遍历的数字,寻找合适的位置插进去
//插入排序 #include<iostream> using namespace std; int main() { int a[]={1,3,1,2,0,4,5,2,6,2,0}; int n=10; int i,j,temp;//用来暂存 for(i=1;i<n;i++){ temp=a[i]; j=i-1; for(;j>=0&&a[j]>temp;j--)//找到tmp插入的位置 a[j+1]=a[j]; // if(j!=i-1)//j等于i-1的话自然不需要填补了 a[j+1]=temp; } for(int i=0;i<10;i++) cout<<a[i]<<" "; }
原文地址:https://www.cnblogs.com/helloworld2019/p/10351161.html
时间: 2024-11-03 12:27:50