当前位置: 首页 > news >正文

排序算法之快速排序QuickSort

挖坑填数-快速排序

1. left = L,right = R;将基准数挖出形成第一个坑s[left];

2. right --; 由后向前找比它小的数,找到后挖出此数填前一个坑s[left]中。

3. left ++; 由前向后找比它大的数,找到后挖出此数填前一个坑s[right]中。

4. 重复进行(2)(3),直到left == right,将基准数填入s[left]中。

 

源码如下:

#include <iostream>
#include <vector>

using namespace std;

void quickSort(int s[], int l, int r)
{
    if(l < r)
    {
        int left = l, right = r;
        int val = s[left];

        while(left < right)
        {
            while(left < right && val <= s[right])
                right--;
            if(left < right)
                s[left++] = s[right];

            while(left < right && val > s[left])
                left++;
            if(left < right)
                s[right--] = s[left];
        }
        s[left] = val;
        quickSort(s, l, left - 1);
        quickSort(s, left + 1, r);
    }
}

int main()
{
    const int len = 3;
    int s[len] = {72, 6, 57};
    int l = 0, r = len  -1;

    quickSort(s, l, r);
    for(int i = 0; i <= r; i++)
    {
        printf("%d\t", s[i]);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/zkfopen/p/10654558.html

相关文章:

  • CSS中一个冒号和两个冒号有什么区别
  • MSF内网渗透 扫描模块
  • [转帖]安德斯·海尔斯伯格
  • [转帖]Linux分页机制之概述--Linux内存管理(六)
  • Linux的远程连接工具:SSH的安装
  • Spring Reference
  • 【大数据应用技术】作业七|爬取全部的校园新闻
  • leetcode 958. Check Completeness of a Binary Tree 判断是否是完全二叉树 、222. Count Complete Tree Nodes...
  • 力扣——二叉树的层次遍历
  • vue工程 使用滚动组件 vue2-better-scroll 实现上拉加载 下拉刷新
  • Python多线程实例
  • loadrunner中web_reg_save_param和web_reg_save_param_ex的区别
  • 理解JavaScript【转】
  • python入门 第一节
  • 1255: 打怪升级(Java)
  • hexo+github搭建个人博客
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Computed property XXX was assigned to but it has no setter
  • CSS魔法堂:Absolute Positioning就这个样
  • Golang-长连接-状态推送
  • HTML中设置input等文本框为不可操作
  • JavaScript 一些 DOM 的知识点
  • java中具有继承关系的类及其对象初始化顺序
  • python3 使用 asyncio 代替线程
  • 阿里云Kubernetes容器服务上体验Knative
  • 初识 webpack
  • 漂亮刷新控件-iOS
  • 如何设计一个微型分布式架构?
  • 通过git安装npm私有模块
  • 因为阿里,他们成了“杭漂”
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • #include<初见C语言之指针(5)>
  • #pragma 指令
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (33)STM32——485实验笔记
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (五)c52学习之旅-静态数码管
  • (转)程序员疫苗:代码注入
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net MVC4 上传大文件,并保存表单
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net中我喜欢的两种验证码
  • :O)修改linux硬件时间
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ACTF2020 新生赛]Upload 1
  • [C#基础]说说lock到底锁谁?
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [C++] sqlite3_get_table 的使用
  • [codevs1288] 埃及分数
  • [ios-必看] IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS