zoukankan      html  css  js  c++  java
  • QuickSort c++

    QuickSort c++

    简介 算法导论
    在这里插入图片描述

    原理 from Wiki
    Wiki
    在这里插入图片描述

    非常快的排序算法:

    划分两个子数组后 两个子数组之间不会进行比较 比较次数减少 所以算法变快

    只要划分常数比例,算法的运行时间 : theta(nlgn);

    执行顺序:
    左侧排序完 在执行右侧

    实验结果:
    在这里插入图片描述
    C++ code
    #include"QUICKSORT.h"

    #pragma once
    #include<vector>
    
    int Partition(std::vector<int>& A, const int& p, const int& r)
    {
    	int x = A[r];
    	int i = p - 1; //断点
    	for (auto j = p;j != r;++j)
    	{
    		if (A[j] <= x)
    		{
    			++i;
    			std::swap(A[i], A[j]);
    		}
    	}
    	std::swap(A[i + 1], A[r]);
    	return i + 1;
    }
    
    void QuickSort(std::vector<int>& A, const int& p, const int& r)
    {
    	if (p < r)
    	{
    		int q = Partition(A, p, r);
    		QuickSort(A, p, q - 1); //QL
    		QuickSort(A, q + 1, r); //QR
    	}
    }
    

    main.cpp

    #include"QUICKSORT.h"
    #include<iterator> //ostream_iterator
    void QuickSort()
    {
        vector<int> v = { 0,2,8,7,1,3,5,6 };//0 占位置 是 i = p-1;
        cout << "A is" << endl;
        std::ostream_iterator<int> out_iter(cout, " ");
        copy(v.begin() + 1, v.end(), out_iter);
        cout << endl;
        QuickSort(v, 1, v.size()-1);
        cout << " sorted A " << endl;
        copy(v.begin() + 1, v.end(), out_iter);
    }
    int main()
    {
        QuickSort();
    }
    
  • 相关阅读:
    微擎开发文档/微擎执行主流程介绍
    数据库 first
    ThinkPHP CURD 操作
    thinkPHP3.2.3 框架
    THINKPHP 框架的模板技术
    PHP 符号
    CentOS: 网络连接故障排除
    yum grouplist 安装gnome桌面环境
    centos图形界面的开启和关闭
    dk7和jdk8的一些新特性
  • 原文地址:https://www.cnblogs.com/Z-s-c11/p/13828262.html
Copyright © 2011-2022 走看看