正序

#include

void sort(int *, int, int);

void sort(int arr[], int left, int right)

{

// 如果数组(子数组)只有1个元素时直接返回

if (left == right) {

return;

}

// i为左向右移动位置指针,j为右向左移动位置指针

int i, j, tmp;

// 第1个元素作为本轮排序的参考值

i = left + 1;

j = right;

while (i < j) {

// 必须j先查找,条件匹配即停止

// while (i < j && arr[j] > arr[left]) {

while (i < j && !(arr[j] <= arr[left])) {

j--;

}

// i开始查找,条件匹配即停止

// while (i < j && arr[i] <= arr[left]) {

while (i < j && !(arr[i] > arr[left])) {

i++;

}

// 交换i和j位置的数值,可能是两个位置,也可能是同位置(虽然多余,但不影响结果)

tmp = arr[i];

arr[i] = arr[j];

arr[j] = tmp;

}

// 执行到这里本轮的i,j查找已经结束,且两者位置重合,重合位置为拆分数组的分隔点

// 参考值>i位置交换(因本次为正序)

if (arr[left] > arr[i]) {

tmp = arr[left];

arr[left] = arr[i];

arr[i] = tmp;

}

// 拆分为2个数组递归,左子数组不包含拆分点,右数组在至少包含拆分点本身1个元素(在本轮子数组为2个元素时的情况)

sort(arr, left, i - 1);

sort(arr, i, right);

}

int main(void)

{

int arr[] = {12, 3, 7, 25, 11, 5, 23, 5, 0};

int length;

length = sizeof(arr) / sizeof(int);

sort(arr, 0, length - 1);

printf("-------------------\n");

for ( int i = 0; i < length; i++ ) {

printf("%d, ", arr[i]);

}

printf("\n");

return 0;

}

倒序

#include

void sort(int *, int, int);

void sort(int arr[], int left, int right)

{

if (left == right) {

return;

}

int i, j, tmp;

i = left + 1;

j = right;

while (i < j) {

while (i < j && arr[j] < arr[left]) {

//while (i < j && !(arr[j] >= arr[left])) {

j--;

}

while (i < j && arr[i] >= arr[left]) {

//while (i < j && !(arr[i] < arr[left])) {

i++;

}

tmp = arr[i];

arr[i] = arr[j];

arr[j] = tmp;

}

if (arr[left] < arr[i]) {

tmp = arr[left];

arr[left] = arr[i];

arr[i] = tmp;

}

sort(arr, left, i - 1);

sort(arr, i, right);

}

int main(void)

{

int arr[] = {12, 3, 7, 25, 11, 5, 23, 5, 0};

int length;

length = sizeof(arr) / sizeof(int);

sort(arr, 0, length - 1);

printf("-------------------\n");

for ( int i = 0; i < length; i++ ) {

printf("%d, ", arr[i]);

}

printf("\n");

return 0;

}

如何将倒序改为正序C语言,快速排序(正序+倒序)C语言版相关推荐

  1. c语言 链表倒序,C语言链表逆序方法技巧

    C语言链表逆序方法技巧 C语言有丰富的数据结构和运算符.包含了各种数据结构,如整型.数组类型.指针类型和联合类型等,用来实现各种数据结构的运算.下面是小编为大家搜索整理的C语言链表逆序方法技巧,希望大 ...

  2. 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集

    第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...

  3. 时空序贯指示模拟和序贯高斯模拟的步骤

    时空序贯指示模拟和序贯高斯模拟的步骤 一.时空序贯指示模拟 1.每个样点进行四次指示变换,小于那个阈值取1,否则取0: 2.计算四次,得到四个理论变异函数: 3.定义时空格网矩阵和随机路径: 4.随机 ...

  4. php 字节序,Linux_Linux中网络字节序和主机字节序,主机字节序就是我们平常说的 - phpStudy...

    Linux中网络字节序和主机字节序 主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序.Big-Endian和Littl ...

  5. 二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)

    Description 已知二叉树的一个按前序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树,并输出建立二叉树的前序遍历序列.中序遍历序列.后序遍历序列.层次遍历序列 ...

  6. java 大端字节序_理解字节序 大端字节序和小端字节序

    以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005 ...

  7. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)

    二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...

  8. 【转】理解字节序 大端字节序和小端字节序

    转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/by ...

  9. 先序中序数组推后序数组

    二叉树遍历 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问.访问结点所做的操作依赖于具体的应用问 题. 遍历是二叉树上最重要的运算之一,是二叉树上进行其它 ...

  10. python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...

    [Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...

最新文章

  1. Go 为什么这么“快”
  2. android 广告弹出层,安卓广告活动弹窗控件 android-adDialog
  3. 报表控件NCreport教程:子查询系统设计
  4. MySQL(26)--- 索引
  5. MINIGUI图形界面开发入门,交叉编译,移植
  6. java 日历工具_java中强大的时间处理工具:Calendar类(日历类)
  7. 快速查找Hashtable中的元素
  8. Leetcode 235.二叉搜索树的最近公共祖先
  9. 微软Silverlight 3正式版
  10. 修改帝国cms验证码 每个都不一样
  11. Python数据分析入门(十九):绘制散点图
  12. 免费PR转场 多种创意图形转场过渡PR动态图形模板MOGRT转场
  13. 《 浩海技术 Ghost XP SP3 快速装机版 V14.0 》 世界杯特别纪念版
  14. VTN线下体验店 汇聚全球高端品牌 打造非凡购物体验
  15. 超链接中 utm_source, utm_medium 等参数的含义是什么?
  16. 数据库入门day06之联接查询(脑图+详解)
  17. python plt图片保存emf类型_matplotlib---保存图片出现的问题
  18. 【论文笔记】Neural Relation Extraction with Multi-lingual Attention
  19. 致我们终将逝去的高考
  20. “量子XX”,是怎么被玩坏的?

热门文章

  1. 论文阅读:ICCV2021 TransReID: Transformer-based Object Re-Identifification
  2. JavaScript保姆级教程
  3. 29python腾讯位置大数据北京2019五一期间迁出数据
  4. 高性能两级缓存J2Cache
  5. TCP/IP详解学习笔记 这位仁兄写得太好了
  6. 有哪位仁兄可以告诉我,下载软件包的时候出现这种情况是怎么一回事呢?kali虚拟机,希望看见的前辈不吝赐教
  7. react使用二级(多级)路由(rout)实现局部跳转
  8. 程序员薪酬高达 462 万元:是怎么回事?
  9. 什么是GCC,ICC,IAR
  10. 红米手机root之后 eclipse无法打开data目录