zoukankan      html  css  js  c++  java
  • 算法导论学习随笔——第七章 快速排序

    人这玩意果然是三分钟热度……废话就不写了,一步步来吧。

    快速排序:worstcase O(n2

         expected time complexity:O(nlgn)

    快排的思路:分治法,分解—>解决(递归)—>合并(不需要,原址排序)

    伪代码:

    quicksort(A,p,r)
    if p<r
        q=partition(A,p,r);
        quicksort(A,p,q-1);
        quicksort(A,q+1;r);
    
    partition(A,p,r)
        q=A[r];
        i=p-1;
        for j from p to r-1
            if A[j]<=q
                i++;
                exchange A[i] with A[j];
        exchange A[i+1] with A[r]
        return i+1
    

    注意:quicksort调用时分情况为p—q-1与q+1—r;A[q]不必加入(否则会被多次利用重复出错)

    oj 1032:quicksort

    代码如下

    #include<iostream>
    using namespace std;
    int partition(int a[],int p,int r)
    {
    	int q=a[r];
    	int s=p-1;
    	for (int i=p;i<r;i++)
    	{
    		if (a[i]<=q)
    		{
    			s++;
    			int temp=a[s];
    			a[s]=a[i];
    			a[i]=temp;
    		}
    	}
    	int temp=a[r];
    	a[r]=a[s+1];
    	a[s+1]=temp;
    	return s+1;
    }
    void quicksort(int a[],int p,int r)
    {
    	if (p<r)
    	{
    		int q=partition(a,p,r);
    		quicksort(a,p,q-1);
    		quicksort(a,q+1,r);
    	}
    }
    int main()
    {
    	int a[100];
    	int n;
    	while(cin>>n)
    	{
    		for (int i=0;i<n;i++)
    			cin>>a[i];
    			quicksort(a,0,n-1);
    		for (int i=0;i<n;i++)
    		{
    			cout<<a[i];
    			if (i!=n-1) cout<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    剩下的证明啊分析啊下次吧……

  • 相关阅读:
    希望jQuery操作DOM文档,则必须确保DOM载入后开始执行
    Web全栈AngularJS
    Web全栈AngularJS
    Web全栈AngularJS
    KD-Tree
    KD-Tree
    KD-Tree
    KD-Tree
    如何提升自身实力
    如何提升自身实力
  • 原文地址:https://www.cnblogs.com/giddens/p/3730395.html
Copyright © 2011-2022 走看看