c++过程

#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;int n;
int a[50];void quicksort(int left, int right)
{if (left > right)return;//递归出口,从左到右都排完了就退出返回函数//不要漏了出口,不然就死循环int temp = a[left];int i = left;int j = right;while (i != j){while (a[j] >= temp && i < j)j--;while (a[i] <= temp && i < j)i++;if (i < j){int t = a[i];a[i] = a[j];a[j] = t;}}a[left] = a[i];a[i] = temp;quicksort(left, i - 1);quicksort(i + 1, right);}
int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}quicksort(0, n - 1);for (int i = 0; i < n; i++)cout << a[i] << " ";return 0;
}//测试数据:
//10
//6 1 2 7 9 3 4 5 10 8

c解析

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int a[101], n;//定义全局变量,这两个变量需要在子函数中使用
//本质上就是设置开头为基准数,然后每一轮的变换都能让基准数归位(也就是排好单个数字的序)//在排正序的时候
//分析核心:右边找小数,左边找大数就是为了缩小查找范围,同时也能确定了基准数的位置--把所有比基准数大的都放在右边,所有小的
//都放在左边,这样下一次新的基准数归位的时候我就只用在一边去查找,而不用全部遍历,这样就提升了速度。
//同时确定基准数的位置就是因为把小的放在左边,大的放右边,那么中间就只能是基准数的位置.
void quicksort(int left, int right)
{int i, j, t, temp;if (left > right)return;temp = a[left]; //temp中存的就是基准数 i = left;j = right;while (i != j)//没相遇就继续交换,相遇了就直接基准数归位,然后将相遇位置设置为新的基准点{//顺序很重要,要先从右往左找 while (a[j] >= temp && i < j)j--;//再从左往右找 while (a[i] <= temp && i < j)i++;//交换两个数在数组中的位置 if (i < j)//当哨兵i和哨兵j没有相遇时{t = a[i];a[i] = a[j];a[j] = t;}}//最终将基准数归位 //设置新的基准数//left一直都是最开头的下标//到终点的时候也就是i==j的时候,两者没有交换,所以还要换一次//也就是将终点和起点对调,终点设置为新的基准数,原本的基准数与终点对调a[left] = a[i];//新的基准点为终点位置的数a[i] = temp;//终点位置变为原来的基准数quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程 quicksort(i + 1, right);//继续处理右边的,这里是一个递归的过程
}
int main()
{int i, j, t;//读入数据 scanf("%d", &n);for (i = 1; i <= n; i++)scanf("%d", &a[i]);quicksort(1, n); //快速排序调用 //输出排序后的结果 for (i = 1; i <= n; i++)printf("%d ", a[i]);getchar(); getchar();return 0;
}

快速排序(cc++)相关推荐

  1. 1500: [NOI2005]维修数列 (Splay)

    1W1A(inf开太大) #include<algorithm> #include<iostream> #include<cstring> #include< ...

  2. CC++面试题大汇总

    预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * ...

  3. 快速排序简便记_建立和测试股票交易策略的快速简便方法

    快速排序简便记 Note from Towards Data Science's editors: While we allow independent authors to publish arti ...

  4. linux内核双链表实现快速排序

          先看效果:演示效果视频       双链表的好处就不提了,在linux内核中对链表的设计简直就是天才的设计,内核双链表与普通的链表不一样.   在普通的链表中,头尾指针与数据绑定在一起,即 ...

  5. 常见的五种排序,冒泡排序,选择排序,插入排序,并归排序,快速排序

    冒泡排序 冒泡排序介绍: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地跑过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小)那么它就会按照大到小的 ...

  6. 【算法图文动画详解系列】QuickSort 快速排序算法

    快排简介 快速排序(Quicksort)是对冒泡排序算法的一种改进. 快速排序由C. A. R. Hoare在1960年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的 ...

  7. 关于快速排序和归并排序的时间复杂度分析

    目录 一.快排时间复杂度分析 二.归并排序时间复杂度分析 三.写在最后 一.快排时间复杂度分析 快速排序的时间复杂度在O(nlogn)~ O(n^2)之间,下面我分别分析这两种情况: (一)快速排序的 ...

  8. 冒泡和快速排序的时间复杂度_java 八大排序算法 冒泡排序 快速排序 堆排序 归并排序 等...

    八大排序算法 一.直接插入 1.基本思路 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的.如此反复循环 ...

  9. Node.js快速排序

    题目 https://leetcode-cn.com/problems/sort-an-array /*** @param {number[]} nums* @return {number[]}*/ ...

最新文章

  1. Kubernetes 1.14 版本发布:正式支持Windows 节点,持久化本地卷进入GA
  2. Canvas实用库Fabric.js使用手册
  3. Access数据库操作软件研究
  4. centos7 centos-home 磁盘空间转移至centos-root下(磁盘空间不足,磁盘不足)
  5. 升值加薪Excel神助攻,数据透视表堪称神器!
  6. md函数MySQL_MySQL的常用SQL语句.md
  7. 【项目经验】--EasyUI DataGrid之右键菜单
  8. python制作英语字典_python如何制作英文字典
  9. mysql socket tcp udp_TCP、UDP、HTTP、SOCKET之间的区别
  10. oracle adg 人工干预,Oracle DataGuard
  11. linux释放内存后设备起不来,Linux-Memory小记
  12. python实现csdn博客下载
  13. 微信小程序页面倒计时
  14. spss变量视图转数据视图_SPSS的数据视图和变量视图
  15. 基于STM32F103单片机的车牌识别图像处理识别系统 原理图PCB程序设计
  16. php webp格式转换,webp的格式的转换
  17. java 提交mac地址栏_Mac系统快捷键大全 - 米扑博客
  18. Mixpanel 可视化ABTest分析 —— iOS篇
  19. 顺丰java_顺丰API调用java版
  20. 英飞凌——飞行时间的工作原理是什么

热门文章

  1. Citrix XenApp/XenDesktop 7.8 版本新功能介绍
  2. 中彩双色球彩票软件 红球预测专家 多特软件
  3. Qt 编译错误 cannot find -lGL 解决方法
  4. PLC控制柜结构以及原理
  5. 计算机求职信英语作文80字,求职信英语作文(共8篇)
  6. 数学建模——种群竞争模型
  7. Java完美实现access库_Java之纯JDBC连接Access(值得收藏)
  8. 指令集CEO潘爱民开启“求是·物联”大讲堂第一讲
  9. 就是我mac安装了虚拟机,装了win10,然后发现在mac系统桌面也会有win系统桌面的工具快捷键图标,如果删除mac桌面的快捷键图标,那么win10桌面的图标也消失了,我百度查的方法都不行。我想知道
  10. 小软件推荐 - PPT遥控器