博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 快速排序
阅读量:6194 次
发布时间:2019-06-21

本文共 1103 字,大约阅读时间需要 3 分钟。

hot3.png

yuanzhen:~/C_script$ cat quicksort.cpp

#include <iostream>
#include <cstdlib>
#include <vector>
#include <cstdio>

#define random(x) (rand()%x)

std::vector<int> vec;

std::vector<int> init(int n)   //初始化  vector  n个值

{
    std::vector<int> avec(n);
    int x=n*10;
    for (int i=0;i<avec.size();++i)
    {
        avec[i]=random(x);
    }
    return avec;
}

void show(std::vector<int> avec)

{
    for(int i=0;i<avec.size();++i)
    {
        std::cout << avec[i] << "\t";
    }
    std::cout << std::endl;
}

void quicksort(int left, int right)

{
    if(left < right)
    {
        
        int i=left, j=right, t, m;
        
        while (i < j)
        {
            while(i<j && vec[j]>=vec[left])    // 基准值为 vec[left], 右侧开始遍历查找小于基准值的数值
            {
                j--;
            }
            while(i<j && vec[i]<=vec[left])   // 左侧遍历查找大于基准值的数值
            {
                i++;
            }
            m=vec[j];
            vec[j]=vec[i];            // 将右侧小于基准的数值与左侧大于基准的数值进行互换
            vec[i]=m;
            show(vec);
            
        }
        t=vec[i];
        vec[i]=vec[left];
        vec[left]=t;
        std::cout << i << std::endl;     // 当左侧与右侧相遇时, 基准值和该值互换, 或基准值归位
            show(vec);
        
        quicksort(left, i);
        quicksort(i+1, right);
    }
}

int main(int argc, char** argv)
{
    system("clear");
    int n;
    std::cin >> n;
    vec=init(n);
    show(vec);
    quicksort(0, n-1);
    show(vec);
    return 0;
}
 

转载于:https://my.oschina.net/lCQ3FC3/blog/820410

你可能感兴趣的文章
[转] MONGODB基本命令用
查看>>
尼科彻斯定理
查看>>
Codeforces Round #565 (Div. 3) C. Lose it!
查看>>
Spring Bean 生命周期
查看>>
C#读取XML C#写入XML
查看>>
Intersection of Two Linked Lists
查看>>
52.下一个排列
查看>>
攻城记:Thinkphp框架的项目规划总结和踩坑经验
查看>>
解决 sublime text 3 右键菜单栏出现多余的菜单项分隔符的问题
查看>>
spring之setter注入
查看>>
unique_ptr_c++11
查看>>
springMvc---跨服务器文件上传(实测总结)
查看>>
POJ 2986 A Triangle and a Circle
查看>>
修改Weblogic jdk版本
查看>>
JavaScript中的栈和堆内存,作用域
查看>>
暴力分析backbone.js(5)
查看>>
HTML自学基础
查看>>
UVA1401 Remember the Word
查看>>
[学习笔记]基数排序
查看>>
判断对象是否为空
查看>>