第一种:

#include<stdio.h>void Swap(int*a,int*b)
{int tmp=*a;*a=*b;*b=tmp;
}int PartSort1(int* a, int left, int right)//快排
{int keyi = left;while (left < right){//找小while (left < right && a[right] >= a[keyi]){--right;}//找大while (left < right && a[left] <= a[keyi]){++left;}Swap(&a[left], &a[right]);}Swap(&a[keyi], &a[left]);return left;
}void Quicksort(int*a,int begin,int end){if(begin>=end)return 0;int key=PartSort1(a,begin,end);Quicksort(a,begin,key-1);Quicksort(a,key+1,end);}int main()
{int a[10]={0,7,9,8,5,6,4,3,2,1};Quicksort(a,0,9);for(int i=0;i<10;i++){printf("%d ",a[i]);}return 0;
}

第二种:挖坑法

#include<stdio.h>void Swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}int PartSort2(int* a, int left, int right)//快排
{int key = a[left];int pit = left;while (left < right){while (left<right && a[right]>key)right--;a[pit] = a[right];pit = right;while (left < right && a[left] <key)left++;a[pit] = a[left];pit = left;}a[pit] =key;return pit;}void Quicksort(int* a, int begin, int end)
{if (begin >= end)return 0;int key = PartSort2(a, begin, end);Quicksort(a, begin, key - 1);Quicksort(a, key + 1, end);
}int main()
{int a[10] = { 0,7,9,8,5,6,4,3,2,1 };Quicksort(a, 0, 9);for (int i = 0; i < 10; i++){printf("%d ", a[i]);}return 0;
}

第三种:

#include<stdio.h>void Swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}int PartSort3(int* a, int left, int right)//快排
{int key = left;int prev = left;int cur = left + 1;while (cur <= right){if (a[cur] < a[key]&& a[++prev] != a[cur])Swap(&a[prev], &a[cur]);cur++;}Swap(&a[prev], &a[key]);return prev;}void Quicksort(int* a, int begin, int end)
{if (begin >= end)return 0;int key = PartSort3(a, begin, end);Quicksort(a, begin, key - 1);Quicksort(a, key + 1, end);
}int main()
{int a[10] = { 0,7,9,8,5,6,4,3,2,1 };Quicksort(a, 0, 9);for (int i = 0; i < 10; i++){printf("%d ", a[i]);}return 0;
}

C语言实现快速排序(三种)相关推荐

  1. C语言程序设计有哪几种结构,第章c语言程序设计的三种基本结构.ppt

    第章c语言程序设计的三种基本结构 北京科技大学 计算机系 第2章 C语言程序设计 的三种基本结构 2.1 顺序结构程序设计 2.1.1 C语句 2.1.2 字符数据的输入与输出 2.1.3 格式输入与 ...

  2. Python语言学习:三种随机函数random.seed()、numpy.random.seed()、set_random_seed()及random_normal的简介、使用方法(固定种子)详细攻略

    Python语言学习:三种随机函数random.seed().numpy.random.seed().set_random_seed()及random_normal的简介.使用方法(固定种子)之详细攻 ...

  3. Scala 语言输出的三种方式

    Scala 语言输出的三种方式 字符串通过+号连接(类似 java). printf 用法 (类似 C 语言)字符串通过 % 传值. 字符串通过$引用(类似 PHP).

  4. python选择语句是什么语句_Python语言中的三种选择语句

    本文将详细介绍Python语言中的三种选择语句:if语句,if/else语句和if/elif/else语句.对于每种语句,我们都提供了相应的流程图.与此同时,我们给出许多简单的示例程序,以帮助读者加深 ...

  5. c 语言程序的三种基本结构,C 语言程序的三种基本结构是____ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构...

    C 语言程序的三种基本结构是____ A.顺序结构,选择结构,循环结构 B.递归结构,循环结构,转移结构 更多相关问题 [填空题]移动电商,全称 ,是以 为载体的电商模式. [单选题]有关离子选择性电 ...

  6. 快速排序三种实现方式及其优化

    快速排序三种实现方式及其优化 1.关于快速排序 快速排序是分治法的一个应用. 根据分治法的思想,快速排序算法可描述为: 分解∶数组A[p-r]被划分为两个子数组A[p-q-1]和A[q+1,r],使得 ...

  7. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程

    c语言计算机编程三种方法求解非线性方程 本 科 专 业 学 年 论 文题 目:非线性方程求解比较姓 名: 何 娟 专 业: 计算机科学技术系 班 级: 08 级本科(2)班 指 导 老 师: 刘 晓 ...

  8. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程.doc

    c语言计算机编程三种方法求解非线性方程.doc 本 科 专 业 学 年 论 文题 目非线性方程求解比较姓 名 何 娟 专 业 计算机科学技术系 班 级 08 级本科(2)班 指 导 老 师 刘 晓 娜 ...

  9. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  10. 快速排序——三种划分方式

    思路: 1.分治思想:先划分成两个问题,然后对两个子问题递归排序,最后再合并. 2.核心算法:快排的核心在于划分问题(找到分界点). 代码: //快速排序 public static void qui ...

最新文章

  1. 卡顿严重_魔兽怀旧服:安其拉开门二测结果出炉,暴雪依然无法解决卡顿问题...
  2. BZOJ 1047 理想的正方形(单调队列)
  3. Iptables Layer7禁止QQ、MSN、p2p软件(解决iptable 无法启动)
  4. 微信小程序image bindload事件失效不触发
  5. 第三方应用商店仍为用户获取APP主渠道 细分市场或成新增长点
  6. 我的开发笔记---UIPageControl的详细使用
  7. Spark源码分析之BlockManager通信机制
  8. 华为员工 iPhone 发文遭罚;百度遭约谈勒令整改;锤子 1577 万元被法院保全 | 极客头条...
  9. 计算机组成原理—数据的表示、运算与校验(思维导图)
  10. Java类的方法的理解
  11. JSP中退出登录销毁Session
  12. 华为云计算认证为什么这么火,网络工程师必看云计算怎么学
  13. 2019年秋招中国工商银行软件研发中心(杭州)笔试+面试
  14. 论文笔记A Liver Segmentation Method Based on the Fusion of VNet and WGAN
  15. 生如夏花之绚烂,死如秋叶之静美。 [泰戈尔诗词收集]
  16. win10系统nfs服务器搭建
  17. 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
  18. SteamVR 2.x 手柄拾取3D物体(13)
  19. 关于Sql语句中的模糊查询like关键字详解
  20. Android开发:Android studio开发中引用图片资源(图解)

热门文章

  1. web 垂直对齐方式 vertical-align属性
  2. 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇
  3. 苏宁易购明确2022年目标:加快修复经营,实现全年盈利
  4. ServletPath()与ContextPath()的区别
  5. 小鼠内皮细胞分离提取方法
  6. 【问题解决】Android JDK版本不匹配导致崩溃踩坑记录
  7. Unity制作即时战略游戏毕设
  8. IE 浏览正式退役?27年终落幕,爷青结了
  9. 河南计算机二级报名及在线支付,计算机二级报名官网入口河南【网址】
  10. 华为鸿蒙系统会用于平板吗,谷歌始料不及,任正非正式宣布:鸿蒙OS将用于手机平板等全系产品...