快速排序: 使用快速排序算法对数组进行排序

题目

一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序)
输入描述:
输入为两行。 第一行一个整数n(1 ≤ n ≤ 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。
输出描述:
输出一行,即排序之后的数组,以空格分隔,行末无空格

示列

输入

10 293 108 161 783 376 265 330 598 646 812

输出

108 161 265 293 330 376 598 646 783 812

练习地址

牛客网快速排序练习地址

解题代码

在牛客网的编译环境上有一个测试用例过不了,但是在本地编译,同样的测试用例就可以过,有时间再研究一下。

#include<iostream>
#include<vector>
using namespace std;void swap_two( int &first_number, int &second_number )
{int swap = first_number;first_number = second_number;second_number = swap;
}int quick_sort( vector<int> &vector_sort, int first_point, int last_point )
{if( first_point >= last_point )      //传进来的first_point 可能会大于 last_point,因为下面quick_sort( vector_sort, left_point + 1, last_point )return 0;int left_point = first_point + 1;   // left_point赋值的时候 first_point + 1,防止quick_sort( vector_sort, first_point, left_point - 1 )时小于first_pointint right_point = last_point;int benchmark = first_point;while( left_point < right_point ){if( vector_sort[right_point] > vector_sort[benchmark] ) right_point--;else if( vector_sort[left_point] <= vector_sort[benchmark] ) left_point++;else swap_two(vector_sort[left_point], vector_sort[right_point]);}swap_two(vector_sort[left_point], vector_sort[benchmark]);quick_sort( vector_sort, first_point, left_point - 1 );quick_sort( vector_sort, left_point + 1, last_point );return 0;
}int main()
{int size = 0;cin >> size;int num;vector<int> quick_sort_v;quick_sort_v.reserve(size);do{cin >> num;quick_sort_v.push_back(num);} while (getchar() != '\n');for(auto i : quick_sort_v )cout << i << ' ';cout << endl;quick_sort(quick_sort_v, 0, quick_sort_v.size() - 1);for(auto i : quick_sort_v )cout << i << ' ';cout << endl;
}

快速排序: 使用快速排序算法对数组进行排序相关推荐

  1. java的数组查找算法_java数组、排序算法、查找算法详解

    1.为什么定义数组要采用type[] arrayName;这种方式? 因为这种方式具有很好的可读性,使用这种方式很容易就可以理解这是定义一个变量,其中变量名是arrayName,变量的类型是type[ ...

  2. 归并排序算法实现数组的排序

    需求: 排序前{8,4,5,7,1,3,6,2} 排序后{1,2,3,4,5,6,7,8,} 排序原理: 1. 将数据分为{8,4,5,7},{1,3,6,2}两组. 2. 将每组在细分为{8,4}, ...

  3. 算法:六种比较排序算法

    本文是本人读过<算法导论>之后所写,C代码实现是我尽量参照伪代码所写,如有错误,敬请指正. *:所有排序算法默认从小到大排序,伪代码数组的首元素为A[1], 数组长度为n 一.冒泡排序 冒 ...

  4. 数据结构和算法系列5 七大排序之冒泡排序和快速排序

    排序是我们生活中经常会面对的问题.同学们做操时会按照从矮到高排列:老师查看上课出勤情况时,会按学生学号顺序点名:高考录取时,会按成绩总分降序依次录取等.排序是数据处理中经常使用的一种重要的运算,它在我 ...

  5. 9个元素换6次达到排序序列_(算法四)高级排序(快速排序)

    1.快速排序 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速 ...

  6. 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并

    数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...

  7. Java 实现快速排序法对数组进行排序

     快速排序是对冒泡排序的一种改进,其排序速度相对较快. 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按照这个方法对这两部分数据分别 ...

  8. 冒泡和快速排序的时间复杂度_十大经典排序算法——快速排序

    目录 1.1.排序分类 1.2.排序的定义: 对一序列对象根据某个关键字进行排序. 1.3.术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面. 不稳定:如果a原本在b的前面,而a ...

  9. 排序算法的实现。用C语言编程实现冒泡排序、选择排序、插入排序、shell排序、快速排序、堆排序算法、归并排序。利用随机函数产生N个随机整数(10000以上)。

    #include<stdio.h> #include <time.h> #include<stdlib.h> #define N 10000 double T, T ...

最新文章

  1. [Django](1093, quot;You can#39;t specify target table #39;fee_details_invoices#39; for update in...
  2. R语言可视化包ggplot2包通过因子变量设置图像颜色实战
  3. 《MySQL DBA修炼之道》——2.3 其他MySQL分支的安装
  4. Reporting Services 安装的备份和还原操作
  5. mongodb php代码实例,MongoDB文档的更新(php代码实例)
  6. 中兴5250交换机配置手册_TSN工业交换机中文说明
  7. C 语言实例 - 使用结构体(struct)
  8. springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法
  9. hdu 5437 Alisha’s Party 优先队列
  10. Linux内核IP Queue机制的分析
  11. 使用QT连接access数据库详解(清晰、透彻)
  12. 什么是Photoshop中的图层和蒙版?
  13. Windows 中包括的 USB 设备类驱动程序
  14. 物联网LoRa系列-13:无线电磁波概述以及核心概念的澄清(速度、频率、周期、波长、幅度、功率、相位、干涉)
  15. 银联的bankall_Visa禁止银行利用中国银联(China UnionPay Co.)境外交易
  16. 【论文阅读】Regional Semantic Contrast and Aggregation for Weakly Supervised Semantic Segmentation
  17. C++课程设计 STL通讯录管理系统
  18. SolidKits增效设计工具集——装配体标准件自动统计解决方案
  19. 大数据平台搭建 | Hive
  20. 山东理工大学计算机学院社团联合会,山东理工大学——计算机科学与技术学院开展“十年之约·毕业班会”...

热门文章

  1. 如何在sqlserver中写存储过程
  2. Java很傻,但是IDE很聪明,Intellij IDEA 是一款好产品
  3. Java微服务框架一览
  4. 【JavaScript】this指向经典面试题(超详细)
  5. 算法笔记-CDQ分治
  6. js callee与caller 区别
  7. cf1367E 思维+贪心
  8. HTML5,CSS,JS前端常见知识面试题
  9. onfouce事件与onblur事件
  10. 操作系统中pv操作用c语言,操作系统-pv操作.doc