zoukankan      html  css  js  c++  java
  • 快速排序

    #include<iostream>
    using namespace std;
    
    void quick_sort(int a[],int left,int right){
    
    	//终止条件——————————————————————————————————1
    	if(left>=right)
    		return ;
    	
    
    	//关键代码——————————————————————————————————2
    	
    	int pivot=a[left];	//pivot作为枢纽,比pivot大的数在左侧,小于pivot的数置于右侧。
    	int i=left,j=right;
    	
    	while (i<j)	{//关键性循环,一个萝卜一个坑。右→左(--j);左→右(++i)。。。
    		while(i<j && a[j]>=pivot) --j;
    		if (i<j){	
    			a[i]=a[j];//a[i]=a[j]后,a[j]的值就可以被后续的a[i]覆盖了
    			++i;//a[i]处目前为小于pivot的原a[j]的值,i需要右移一位
    		}
    
    		while(i<j && a[i]<=pivot) ++i;
    		if(i<j){
    			a[j]=a[i];//a[j]=a[i]后,a[i]的值就可以被后续的a[j]覆盖了
    			++j;//a[j]处目前为大于pivot的原a[i]的值,j需要左移一位
    		}
    
    	}
    	a[i]=pivot;//while循环结束时i==j,找到pivot的坑。
    	
    	//分治————————————————————————————————————3
    	quick_sort(a,left,i-1);
    	quick_sort(a,i+1,right);
    }
    
    int main(){
    	int array[]={6, 3, 5, 7, 2, 4, 1, 8, 10, 9};
        quick_sort(array,0,sizeof(array)/sizeof(array[0]) -1);
        for(int i=0;i<sizeof array/sizeof array[0];i++)
            cout<<array[i]<<" ";
        cout<<endl;
    	return 0;
    }

  • 相关阅读:
    Linux 设置主机名和 IP 地址的映射关系
    Zookeeper 数据查看工具 ZooInspector 的使用
    Zookeeper 集群
    Zookeeper 监控指定节点数据变化
    Zookeeper 常用命令
    Spring整合ActiveMQ持久化到Mysql数据库
    Activemq5.15.5持久化到mysql8.0.20
    ActiveMQ支持的协议
    SIGINT SIGTERM SIGKILL区别
    lograte -日志轮询log
  • 原文地址:https://www.cnblogs.com/sjw1357/p/3864007.html
Copyright © 2011-2022 走看看