c语言简单快速排序原理,C语言之简单快速排序

快速排序是一种对冒泡排序的改进,运用了二分的思想,提高了效率,元素的交换是跳跃式的,更适合用在数组这样方便随机读取的顺序结构,平均时间复杂度NlogN。

#include

#include

/*快速排序*/

void input(int*,int);

void output(int*,int);

void order(int*,int,int);

int main(void)

{

int num;

printf("请输入排序元素的个数:");

scanf("%d",&num);

int nums[num];//这里用了自定义数组长度的方法,新的标准支持这样用

shuru(nums,num);//自定义函数,实现数组元素的输入

paixu(nums,0,num-1);//自定义函数,实现快速排序,包含了三个参数,指向数组首地址的指针,排序起始元素下标,排序终止元素下标(目的是用递归方法实现)

shuchu(nums,num);//自定义函数,实现数组元素的输出

return 0;

}

void input(int* nums,int num)

{

int i;

printf("输入元素:\n");

for(i=0;i

{

scanf("%d",nums+i);

}

}

void output(int* nums,int num)

{

int i;

for(i=0;i

{

printf("%d\t",nums[i]);

}

}

void order(int* nums,int left,int right)

{

if(left>=right)//递归退出条件,当要排序部分元素不超过1时结束递归

return;

int i=left,j=right,temp;

while(i!=j)//定义两个变量分别从数组左右两边开始查找,找出相对基准值(为了简化问题这里默认最左边的值为基准值)排序错误的一对元素

{ //换句话就是说把基准值放中间,调整元素使比基准值小的放左边,比基准值大的放右边(默认从小到大)

while(nums[j]>=nums[left]&&i

j--;

while(nums[i]<=nums[left]&&i

i++;

if(i!=j)//交换两边与基准值而言排序错误的元素

{

temp=nums[i];

nums[i]=nums[j];

nums[j]=temp;

}

}

temp=nums[left];//交换,将基准值归位

nums[left]=nums[i];

nums[i]=temp;

paixu(nums,left,i-1);//对于数组左边和右边继续执行上述代码,递归调用

paixu(nums,i+1,right);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 501二叉搜索树中的众数-简单

给定一个有相同值的二叉搜索树&#xff08;BST&#xff09;&#xff0c;找出 BST 中的所有众数&#xff08;出现频率最高的元素&#xff09;。 假定 BST 有如下定义&#xff1a; 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值…

CIO/CTO都应该掌握和了解的EA(企业架构)

我们已进入数字化技术推动的第四次工业革命&#xff0c;是以工业互联网建设为标志。单纯从IT的视角管理信息化系统让许多企业深陷管理困境&#xff0c;解决问题也是按下葫芦浮起瓢。实际上&#xff0c;IT的服务对象是企业的战略、组织、管理、流程等一系列的要素&#xff0c;因…

c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc

专业资料精心整理C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2. 修改颜色3. 注册界面4. 信息保存至文件5. 登录界面6. 管理员录入信息7. 学生信息录入8. 学生成绩录入9. 学生课程表录入10. 学生信息查询界面11学生信息查询12. 学生成绩查询13. 学生课表查…

LeetCode 530二叉搜索树的最小绝对值差-简单

给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#xff1a; 输入&#xff1a; 1\3/2输出&#xff1a; 1 解释&#xff1a; 最小绝对差为 1&#xff0c;其中 2 和 1 的差的绝对值为 1&#xff08;或者 2 和 3&#xf…

扛并发主力军,引入应用层缓存

1.背景缓存的使用一定是今后开发中100%会用到的技术&#xff0c;尤其是Redis相关的问题&#xff0c;如果面试官不问我我几个缓存相关的问题&#xff0c;那我觉得我可能是去了个假的互联网公司。这里考虑到有些初学者刚刚出校园或者自学中&#xff0c;准许我多费口舌介绍下关于缓…

c语言筛法求一个范围内的素数,运用埃拉托色尼筛法求解一定范围内的素数.docx...

#includetypedef struct Node{int data;struct Node *link;}LinkList;void buildList(int max,LinkList *&head){//构建链表函数LinkList *l,*p;int i;head(LinkList*)malloc(sizeof(LinkList));head->linkNULL;lhead;for(i2;i<max;i){p(LinkList*)malloc(sizeof(Lin…

LeetCode 783二叉搜索树节点最小距离-简单

给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;1 示例 2&#xff1a; 输入&#xff1a;root [1,0,48,null,null,12,49] 输出&#xff1a;1 提示&…

二级c语言作答文件不存在,全国计算机等级考试二级C语言上机考试题库及答案...

希望对有需要的人有帮助第1套 一、填空给定函数的功能是调用fun函数建立班级通讯录。通讯录记录每位学生的编号&#xff0c;姓名和电话号码。班级的人数和学生的信息从键盘读入&#xff0c;每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。答案:1. STYPE 2. …

使用 VMware + win10 + vs2019 从零搭建双机内核调试环境

我在前面的文章——《使用 VMware win10 VirtualKD windbg 从零搭建双机内核调试环境》分享了使用 windbg 进行双机内核调试的环境搭建的步骤。有小伙伴儿留言说&#xff1a;在使用 vs 进行双机内核调试的时候&#xff0c;总是连不上。希望能发一篇使用 vs 进行双机内核调试…

LeetCode 617合并二叉树-简单

给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠&#xff0c;那么将他们的值相加作为节点合并后的新值&#xff0c;否则不为 NULL 的节点将直…

配合理lcd的c语言小游戏,C语言源程序LCD.doc

C语言源程序LCDC语言源程序//******** 小波电子工作室 All rights reserved******//******** 个人主页&#xff1a;/niejinbo **//******** 文 件 名&#xff1a; lcd_0712.c **************//******** 功能概要&#xff1a; LCD液晶显示字符 ***********//******** MCU: STC89…

C#中的9个“黑魔法”与“骚操作”

C#中的9个“黑魔法”与“骚操作”我们知道 C#是非常先进的语言&#xff0c;因为是它很有远见的“语法糖”。这些“语法糖”有时过于好用&#xff0c;导致有人觉得它是 C#编译器写死的东西&#xff0c;没有道理可讲的——有点像“黑魔法”。那么我们可以看看 C#这些高级语言功能…

LeetCode 872叶子相似的树-简单

请考虑一棵二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子&#xff0c;如上图所示&#xff0c;给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同&#xff0c;那么我们就认为它们是 叶相似 的。 …

android圆形变方形动画,CSS3 简单的圆形/方形变形动画

CSS语言&#xff1a;CSSSCSS确定html,body {width: 100%;height: 100%;background-color: #221e40;}*,*:after,*::before {box-sizing: border-box;}.centered {width: 100%;height: 100px;position: absolute;top: 50%;margin-top: -50px;}.morph {width: 100%;height: 100px;…

.NET Core开发实战(第35课:MediatR:让领域事件处理更加优雅)--学习笔记

35 | MediatR&#xff1a;让领域事件处理更加优雅核心对象IMediatorINotificationINotificationHandler这两个与之前的 Request 的行为是不一样的&#xff0c;接下来看一下代码internal class MyEvent : INotification {public string EventName { get; set; } }internal class…

LeetCode 559N叉树的最大深度-简单

给定一个 N 叉树&#xff0c;找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 N 叉树输入按层序遍历序列化表示&#xff0c;每组子节点由空值分隔&#xff08;请参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [1,null,3,…

android 5.0状态栏下载地址,Android沉浸式状态栏(5.0以上系统)

Android沉浸式状态栏(5.0以上系统)沉浸式状态栏可以分为两种:1.直接给状态栏设置颜色 (如下图:)这里写图片描述java代码形式:if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {Window window activity.getWindow();window.addFlags(WindowManager.LayoutParams…

解析“60k”大佬的19道C#面试题(下)

解析“60k”大佬的19道C#面试题&#xff08;下&#xff09;在上篇中&#xff0c;我解析了前 10 道题目&#xff0c;本篇我将尝试解析后面剩下的所有题目。解析“60k”大佬的19道C#面试题&#xff08;上&#xff09;这些题目确实不怎么经常使用&#xff0c;因此在后文中&#xf…

LeetCode 543二叉树的直径-简单

给定一棵二叉树&#xff0c;你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1/ \2 3/ \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 代码如下: /*** Def…

android 卡顿代码定位,Android 性能优化实例:通过 TraceView 定位卡顿问题

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;背景项目中使用了鸿洋大神的TreeView树状结构控件&#xff0c; 但是由于在主线程中使用了注解/反射来定位节点&#xff0c; 内容一多就有点卡顿。因此通过android …