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

    快速排序即sort方法的手动实现
    (1.) 确定当前区间的左端点(l),右端点(r),并取(x=q[(l+r)/2])
    (2.) 运用双指针调整区间,使得区间左半边的值都(<=x),右半边区间的值都(>=x)
    (3.) 不断递归

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N =1e6+10;
    int q[N];
    void quick_sort(int q[],int l,int r)
    {
    	if(l>=r) return;
    	int x=q[(l+r)/2],i=l-1,j=r+1;
    	while(i<j)
    	{
    		do i++; while(q[i]<x);
    		do j--; while(q[j]>x);
    		if(i<j) swap(q[i],q[j]);
    	}
    	quick_sort(q,l,j);
    	quick_sort(q,j+1,r);
    }
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++) scanf("%d",&q[i]);
    	
    	quick_sort(q,0,n-1);
    	
    	for(int i=0;i<n;i++) printf("%d ",q[i]);
    	
    	return 0;
     } 
    
  • 相关阅读:
    GCD
    SQLite
    将博客搬至CSDN
    Extjs 4 总结
    spring mvc 复杂参数注入
    7/12 聊天室结束
    7/10
    7/6一些知识点
    随便写写
    spring boot 入门操作(三)
  • 原文地址:https://www.cnblogs.com/daoyuan/p/13491965.html
Copyright © 2011-2022 走看看