常用的排序算法
Posted thusloop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的排序算法相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include<vector>
int n;
int a[110000];
//归并排序
void sort(int l,int r)
if(l>=r)return ;
int mid=(l+r)/2;
sort(l,mid);
sort(mid+1,r);
std::vector<int>vec;
int i,j;
for(i=l,j=mid+1;i<=mid&&j<=r;)
if(a[i]<a[j])
vec.push_back(a[i]);
i++;
else
vec.push_back(a[j]);
j++;
while(i<=mid)
vec.push_back(a[i]);
i++;
while(j<=r)
vec.push_back(a[j]);
j++;
for(i=l;i<=r;i++)
a[i]=vec[i-l];
int main()
std::cin>>n;
for(int i=1;i<=n;i++)
std::cin>>a[i];
sort(1,n);
for(int i=1;i<=n;i++)
std::cout<<a[i]<<" ";
#include<iostream>
#include<stdlib.h>
int n;
int a[1100000];
//快速排序
void quick_sort(int l,int r)
if(l>=r)return ;
int pos=rand()%(r-l+1)+l;
std::swap(a[l],a[pos]);
int temp=a[l];
int i=l,j=r;
while(i<j)
while(a[j]>=temp&&i<j)
j--;
while(a[i]<=temp&&i<j)
i++;
if(i<j)
std::swap(a[i],a[j]);
a[l]=a[i];
a[i]=temp;
quick_sort(l,i-1);
quick_sort(i+1,r);
int main()
std::ios::sync_with_stdio(0);std::cin.tie(0);std::cout.tie(0);
std::cin>>n;
for(int i=1;i<=n;i++)
std::cin>>a[i];
quick_sort(1,n);
for(int i=1;i<=n;i++)
std::cout<<a[i]<<" ";
#include<iostream>
int n;
int a[110000];
//堆排序
void heapadjust(int start,int end)
int temp=a[start];
for(int i=start*2+1;i<=end;i=i*2+1)
if(i+1<=end&&a[i]<a[i+1])
i++;
if(a[i]>temp)
a[start]=a[i];
start=i;
else break;
a[start]=temp;
void heapsort(int len)
for(int i=len/2-1;i>=0;i--)
heapadjust(i,len-1);
for(int i=0;i<len;i++)
std::swap(a[0],a[len-1-i]);
heapadjust(0,len-1-i-1);
int main()
std::cin>>n;
for(int i=0;i<n;i++)
std::cin>>a[i];
heapsort(n);
for(int i=0;i<n;i++)
std::cout<<a[i]<<" ";
以上是关于常用的排序算法的主要内容,如果未能解决你的问题,请参考以下文章