欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速排序模板

程序员文章站 2022-03-24 12:41:30
...

快速排序模板
快速排序是基于二分法的思想,将所要排序的一串数字不断进行二分,将每一个数字找到自己应在的位置,最终实现排序。快速排序的时间复杂度很小,平均时间复杂度为O(NlogN)

     '''c
                #include <stdio.h>
                #include <iostream>
                using namespace std;
                int a[1005]; 
                void qu
    
    icksort(int left,int right)
            {
            	int i,j,t,temp;
            	if(left>right)
            	return;
            	
            	temp=a[left];//temp中贮存的就是基准数
            	i=left;
            	j=right;
            	while(i!=j)
            	{//这一部分的先后顺序很重要,必须先从不是基准数的一端开始判断,这样,最后的一步交换基准数,才能将符合的数字归位
            		while(a[j]>=temp&&i<j)
            		{
            			j--;
            		}
            		while(a[i]<=temp&&i<j)
            		{
            			i++;
            		}//该模板是将数字从小到大排序
            		if(i<j)
            		{
            			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);//继续处理基准数右边部分,是一个递归过程
      
    
              	 return;
                }
int main()
{
	int n;
	cin >> n;
	for(int i=0;i<n;i++)
	{
		cin >> a[i];
	}
	quicksort(0,n-1);//调用快速排序
	for(int i=0;i<n;i++)
	{
		cout <<a[i];
	}
 } 
        '''