今天就先讲一下排序算法之快算排序
首席按要明确十大算法中排序占了三个1、快速排序2、堆排序3、归并排序。当然还有其他的排序算法都比较简单,冒泡,桶等;有人说一个sort不就行了?这么说是不对的,我们要求的是一种算法的思维,话不多说,先上快速排序
算法一:快速排序算法
其实快速排序就是一个换,对,换位置;当然了还要有二分的知识,(二分是啥,不要害怕,简单的一种查找思想而已)
上代码
#include<bits/stdc++.h>
using namespace std;
int a[101];
void quicksort(int left,int right)
{
if(left>right)return ;
else
{//temp为哨兵作用
int temp=a[left],i=left,j=right;//temp说白了就是用来交换的,
//不用纠结
// i和j就是两个坐标上的小火车
while(i!=j)//第一趟,结束条件说就是火车相撞的时候
{
//必须j火车先行,i火车后行
while(a[j]>=temp&&i<j)j--;
while(a[i]<=temp&&i<j)i++;
//排序嘛,严肃一点,大的在左边,小的在右边,一个字,换,一言不合就换位置
if(i<j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
//一趟走完了,哨兵站中间去,还不是换
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);//左半部分递归一下子
quicksort(i+1,right);//右半部分递归一下子
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
quicksort(1,n);//传参quicksort(第一个数的下标,最后一个数的下标)
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
没有了,很简单的一个快速排序,就是二分加换位置
听懂没?啥?没有?快来联系博主(qq3100310659(备注:c++学习,不然就不给通过哦,博主就是这么豪横)