程序员必备十大算法1-快速排序

在这里插入图片描述
今天就先讲一下排序算法之快算排序
首席按要明确十大算法中排序占了三个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++学习,不然就不给通过哦,博主就是这么豪横)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值