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

    #include "stdafx.h"
    
    int a[101], n;
    
    void quicksort(int left, int right) {
    	int i,j,t,temp;
    	if(left>right)
    		return ;
    	temp = a[left];//存储基准数
    	i = left;
    	j = right;
    	while(i!=j) {
    		//先从右往左找
    		while(a[j] >= temp && i<j) {
    			j--;
    		}
    		//再从左往右找
    		while(a[i] <= temp && i<=j) {
    			i++;
    		}
    		//交换两个数再数组中的位置
    		if(i<j) {
    			t = a[i];
    			a[i] = a[j];
    			a[j] = t;
    		}
    	}
    	//最终将基准数归位
    	a[left] = a[i];
    	a[i] = temp;
    	quicksort(left, i-1);//继续处理左边的,递归
    	quicksort(i+1, right);//继续处理右边的,递归
    
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int i,j,t;
    	scanf_s("%d", &n);
    	for(i=1;i<=n;i++) {
    		scanf_s("%d", &a[i]);
    	}
    	quicksort(1, n);
    
    	//输出结果
    	for(i=1;i<=n;i++) {
    		printf("%d ", a[i]);
    	}
    
    	getchar();
    	getchar();
    	return 0;
    }
    

      快速排序基于二分思想,最差时间复杂度为O(N2),平均时间复杂度为O(NlogN)

  • 相关阅读:
    codeforces
    hdu
    hdu
    poj 2823
    hdu
    hdu
    hdu
    微信公众号 SDK
    PHP 正则表达式
    注册和登录时的验证码
  • 原文地址:https://www.cnblogs.com/fancing/p/8619397.html
Copyright © 2011-2022 走看看