第一章 排序

第三节 快速排序

快速排序是最常用的排序方法。快排运用的递归方法很有意思。掌握了这种排序方法可以在将来学习递归时更快入门。只是快排的思路与之前的排序方法相比较为复杂,再加担心上我的表达能力会让让大家产生误解,所以推荐大家去看大牛的博客,我只给出代码,如果有不懂的同学,可以在评论留下问题,我会尽快回答的。

#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;
}
}
// 最终将基准数归位
a[left]=a[i];
a[i]=temp; quicksort(left,i-1); // 继续处理左边的,这里是一个递归过程
quicksort(i+1,right); // 继续处理右边的,这里是一个递归过程
return;
} int main() {
int i,j;
// 读入数据
scanf("%d",&n); // n代表有n个数据需要排序
for(i=0;i<n;i++)
scanf("%d",&a[i]); quicksort(0,n-1); // 快速排序调用 // 输出排序后的结果
for(i=0;i<n;i++)
printf("%d ",a[i]); return 0;
}

看上去是有点长,但是抽点时间研究下很好懂的。

以上。

和我一起从0学算法(C语言版)(二)的更多相关文章

  1. 和我一起从0学算法(C语言版)(一)

    第一章 排序 第一节 简化版桶排法 友情提示:此文章分享给所有小白,大牛请绕路! 生活中很多地方需要使用排序,价格的由低到高.距离的由远及近等,都是排序问题的体现.如果排序量较少,依靠个人能力很容易实 ...

  2. 和我一起从0学算法(C语言版)(四)

    第三章 搜索 深度优先搜索与宽度优先搜索 定义 深度优先搜索(DFS) 过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 宽度优先搜索(BFS) 不考虑结果的可能位 ...

  3. 和我一起从0学算法(C语言版)(三)

    第二章 暴力求解(枚举法) 第一节 小学奥数题-程序求解 观察下面的加法算式:       祥 瑞 生 辉   +   三 羊 献 瑞 -------------------    三 羊 生 瑞 气 ...

  4. 教孩子学编程 python语言版PDF高清完整版免费下载|百度云盘|Python入门

    百度云盘:教孩子学编程 python语言版PDF高清完整版免费下载 提取码:mnma 内容简介 本书属于no starch的经典系列之一,英文版在美国受到读者欢迎.本书全彩印刷,寓教于乐,易于学习:读 ...

  5. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  6. 快速排序算法C语言版

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

  7. 数据结构1:数据结构与算法C语言版分析概述

    本节开始将带领大家系统地学习数据结构,作为一门计算机专业大二学生的必修课程,该课程面对的目标人群为初步具备基本编程能力和编程思想的程序员(大一接触了 C 语言或者 C++).通过系统地学习数据结构,可 ...

  8. 《数据结构与算法(C语言版)》严蔚敏 | 第五章 建立二叉树,并完成三/四种遍历算法

    PS:所有的代码示例使用的都是这个图 2019-10-29 利用p126的算法5.3建立二叉树,并完成三种遍历算法 中序 后序 先序 #include<iostream> #include ...

  9. 【排序】表插入排序算法(C语言版)

    排序耗时的操作主要分为两种:查找比较.记录移位. 1.表插入排序 在查找比较基础上,尽量减少记录移位步数,可以令排序操作耗时降低,表插入排序正是为减少移位次数而出现的. 在数据结构上,数据是存储在静态 ...

随机推荐

  1. pixi的图片处理

    pixi的图片处理   var texture = PIXI.Texture.fromImage('sprite.png');var sprite = new PIXI.Sprite(texture) ...

  2. 【pwnable.kr】 uaf

    目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...

  3. 聊一聊Java中的各种运算符(转载)

    计算机之所以叫"计算机",其最基本用途之一就是运算,对应刚刚接触Java的小伙伴而言,熟悉并掌握Java中的各种运算符及其在表达式中的运算优先级是十分必要的. 算术运算 算术运算主 ...

  4. Vulkan SDK 之Render Pass

    Create a Render Pass A render pass describes the scope of a rendering operation by specifying the co ...

  5. 3分钟教你用python制作一个简单词云

    首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip install jieba # 安装pip install wordcloud 1.制作英文字母的词云 ...

  6. 干货分享:想要写好Proposal,这四个问题必须解决

    当大家确定了毕业论文选题之后,下一步就是着手写开题报告,也就是proposal.开题报告或者说是研究计划要回答四个问题:为什么这个问题重要,为什么这个问题很难解决,为什么现在要考虑解决这个问题,为什么 ...

  7. Node.js NPM 介绍

    章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json NPM ...

  8. Java高级特性——注解,这也许是最简单易懂的文章了

    最近,浪尖在做flink的项目时source和sink的绑定那块用到了注解,当然新版本1.6以后就变为server load的方式加载. 但是浪尖也是觉得很有毕业讲一下注解,毕竟高级免试也会问答的吧. ...

  9. springMVC上传文件和文件下载

    springMVC.xml文件 <bean id="multipartResolver" class="org.springframework.web.multip ...

  10. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结(转载)

    转载自 https://blog.csdn.net/baidu_24024601/article/details/51957270 之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让 ...