• 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();
    }
    
  • 相关阅读:
    单选文本及多行文本溢出问题
    div和textarea内容转换(****)
    URL OR PC/PHONE OR Strlen
    DocumentFragment(创建文档碎片节点)
    ETag
    重绘和回流
    自定义指令
    Angular JS 自定义服务
    jquery ajax 实例
    js 斐波那契序列
  • 原文地址:https://www.cnblogs.com/Z-s-c11/p/13828262.html
Copyright © 2020-2023  润新知