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

    //插入排序
    void InsertionSort(int a[], int n)
    {
    	int i, j, t;
    	for(i = 1; i < n; i++)
    	{
    		t = a[i];
    		for(j = i; j > 0 && a[j - 1] > t; j--)
    			a[j] = a[j - 1];
    		a[j] = t;
    	}
    }
    
    template <typename T>
    void swap(T *x, T *y)
    {
    	T temp; temp = *x;
    	*x = *y; *y = temp;
    }
    
    //三数中值分割方法
    int Median3(int a[], int l, int r)
    {
    	int c = (l + r) / 2;
    	if(a[l] > a[c]) swap(&a[l], &a[c]);
    	if(a[l] > a[r]) swap(&a[l], &a[r]);
    	if(a[c] > a[r]) swap(&a[c], &a[r]);
    	swap(&a[c], &a[r - 1]);
    	return a[r - 1];
    }
    
    //快速排序主例程
    void Qsort(int a[], int l, int r)
    {
    	int i, j, p;
    	if(l + 3 <= r)
    	{
    		p = Median3(a, l, r);
    		i = l; j = r - 1;
    		for(;;)
    		{
    			while(a[++i] < p){}
    			while(a[--j] > p){}
    			if(i < j) swap(&a[i], &a[j]);
    			else break;
    		}
    		swap(&a[i], &a[r - 1]);
    		Qsort(a, l, i - 1);
    		Qsort(a, i + 1, r);
    	}
    	else
    		InsertionSort(a + l, r - l + 1);
    }
    

      

  • 相关阅读:
    第七周编程总结
    第六周编程总结
    第五周编程总结
    2019 第四周作业编程总结
    第三周编程总结
    寒假作业 pta编程总结3
    跟着官网学Angular-创建响应式表单-源代码
    RxJS---转载
    NPM
    Sass
  • 原文地址:https://www.cnblogs.com/ChobitsSP/p/2866083.html
Copyright © 2011-2022 走看看