zoukankan      html  css  js  c++  java
  • 快速排序思想+实现(Goal:手写快排)

    转载于:http://blog.csdn.net/morewindows/article/details/6684558

    该方法的基本思想是:

    1.先从数列中取出一个数作为基准数。

    2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

    3.再对左右区间重复第二步,直到各区间只有一个数。

    虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明:挖坑填数+分治法

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    void quick_sort(int s[], int l, int r)
    {
        if(l<r)
        {
        int i = l, j = r;
        int x = s[i];
        while(i<j)
        {
            while(s[j]<=x&&i<j)
                j--;
            if(i<j)
                s[i++]=s[j];
            while(s[i]>x&&i<j)
                i++;
            if(i<j)
                s[j--]=s[i];
        }
        s[i]=x;
        quick_sort(s,l,i-1);
        quick_sort(s,i+1,r);
        }
    }
    
    int main()
    {
        int n = 5;
        int a[n];
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        quick_sort(a,0,n-1);
        for(int i=0; i<n; i++)
            printf("%d ", a[i]);
        free(a);
        return 0;
    }
  • 相关阅读:
    组合模式
    C#+ArcEngine中com对象的释放问题
    备忘录模式
    C#中的DataSet添加DataTable问题
    jenkins从节点
    jenkins Publish over SSH
    jenkins凭据
    jenkins maven项目
    jenkins部署-docker
    zabbix api
  • 原文地址:https://www.cnblogs.com/ZP-Better/p/7079037.html
Copyright © 2011-2022 走看看