快速排序
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e6+10;
int a[maxn];
int n,m;
int Partition(int left,int right)
{
int p=a[left];
int j=left;
for(int i=left+1;i<=right;i++)
{
if(a[i]<p)
{
j++;
swap(a[i],a[j]);
}
}
swap(a[j],a[left]);
return j;
}
void Quick_sort(int left,int right)
{
if(left>=right) return;
int p=Partition(left,right);
Quick_sort(left,p-1);
Quick_sort(p+1,right);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
归并排序
void merge_sort(int num[],int left,int right,int temp[])
{
if(left>=right) return ;
int mid=(left+right)/2;
merge_sort(num,left,mid,temp);
merge_sort(num,mid+1,right,temp);
for(int i=left;i<=right;i++)
{
temp[i]=num[i];
}
int i=left,j=mid+1;
for(int cur=left;cur<=right;cur++)
{
if(i==mid+1) num[cur]=temp[j++];
else if(j>right) num[cur]=temp[i++];
else if(temp[i]<=temp[j]) num[cur]=temp[i++];
else num[cur]=temp[j++];
}
return ;
}
冒泡排序
void bubble_sort(int num[],int len)
{
for(int i=0; i<len-1; i++)
{
bool exchange=false;
for(int j=0; j<len-i-1; j++)
{
if(num[j]>num[j+1])
{
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
exchange=true;
}
}
}
for(int i=0; i<10; i++)
{
cout<<num[i]<<" ";
}
}
选择排序
void selection_sort(int num[],int len)
{
for(int i=0; i<len; i++)
{
int minIndex=i;
for(int j=i+1; j<len; j++)
{
if(num[j]<num[minIndex])
{
minIndex=j;
}
}
int temp=num[i];
num[i]=num[minIndex];
num[minIndex]=temp;
}
for(int i=0; i<10; i++)
{
cout<<num[i]<<" ";
}
}
插入排序
void insert_sort(int num[],int len)
{
for(int i=1; i<len; i++)
{
int temp=num[i];
int j;
for(j=i; j-1>=0&&num[j-1]>temp; j--)
{
num[j]=num[j-1];
}
num[j]=temp;
}
for(int i=0; i<10; i++)
{
cout<<num[i]<<" ";
}
}