插入排序:
#include<iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
cin>>a[i];
for(int i=1;i<10;i++)
{
int num=a[i];//选择一个值进行比较。
int j=i-1;
for(;j>=0;j--)
if(num<a[j])//和前面的数比较,小于前面的数就把前面的数向后移动一位。
a[j+1]=a[j];
else break;//当出现比num大的数时就跳出循环。
if(num!=a[i])
a[j+1]=num;
}
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
冒泡排序:
#include<iostream>
using namespace std;
int main()
{
int a[10001],n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n-1;i>=1;i--)//进行n-1趟排序
for(int j=1;j<=i;j++)//与下一个元素比较,大于则交换,之前已经沉下来的元素就不用再比较了
if(a[j]>a[j+1]) swap(a[j],a[j+1]);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
选择排序:
#include<iostream>
using namespace std;
int main()
{
int a[10001],n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n-1;i>=1;i--)//进行n-1趟排序
for(int j=1;j<=i;j++)//与下一个元素比较,大于则交换,之前已经沉下来的元素就不用再比较了
if(a[j]>a[j+1]) swap(a[j],a[j+1]);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
快速排序:
#include<iostream>
using namespace std;
typedef long long ll;
ll a[1000001];
void qsort(ll,ll);
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
qsort(1,n);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
void qsort(ll left,ll right)
{
int ji=a[(left+right)/2];
int i=left,j=right;
while(i<=j)
{
while(ji<a[j]) j--;
if(i<=j) swap(a[j],a[i++]);
while(ji>a[i]) i++;
if(i<=j) swap(a[i],a[j--]);
}
if(j>left) qsort(left,j);
if(i<right) qsort(i,right);
}
归并排序:
#include<iostream>
using namespace std;
int a[1000],r[1000];
void sort(int ,int);
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(1,n);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
void sort(int left,int right)
{
if(left==right) return;//数列仅有两个元素时返回。
int mid=(left+right)/2;
sort(left,mid);//对左边区间排序。
sort(mid+1,right);//对右边区间排序。
int i=1,begin=left,end=mid+1;
while(begin<=mid&&end<=right)
{
if(a[begin]<a[end])
r[i++]=a[begin++];
else r[i++]=a[end++];
}
while(begin<=mid) //把左边区间剩余元素放进r中
r[i++]=a[begin++];
while(end<=right)//把右边区间剩余元素放进r中
r[i++]=a[end++];
i=1;
for(int j=left;j<=right;j++)//把r中元素转移进a数组中。
a[j]=r[i++];
}