如何将倒序改为正序C语言,快速排序(正序+倒序)C语言版
正序
#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语言版相关推荐
- c语言 链表倒序,C语言链表逆序方法技巧
C语言链表逆序方法技巧 C语言有丰富的数据结构和运算符.包含了各种数据结构,如整型.数组类型.指针类型和联合类型等,用来实现各种数据结构的运算.下面是小编为大家搜索整理的C语言链表逆序方法技巧,希望大 ...
- 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集
第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...
- 时空序贯指示模拟和序贯高斯模拟的步骤
时空序贯指示模拟和序贯高斯模拟的步骤 一.时空序贯指示模拟 1.每个样点进行四次指示变换,小于那个阈值取1,否则取0: 2.计算四次,得到四个理论变异函数: 3.定义时空格网矩阵和随机路径: 4.随机 ...
- php 字节序,Linux_Linux中网络字节序和主机字节序,主机字节序就是我们平常说的 - phpStudy...
Linux中网络字节序和主机字节序 主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序.Big-Endian和Littl ...
- 二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)
Description 已知二叉树的一个按前序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树,并输出建立二叉树的前序遍历序列.中序遍历序列.后序遍历序列.层次遍历序列 ...
- java 大端字节序_理解字节序 大端字节序和小端字节序
以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005 ...
- 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...
- 【转】理解字节序 大端字节序和小端字节序
转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/by ...
- 先序中序数组推后序数组
二叉树遍历 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问.访问结点所做的操作依赖于具体的应用问 题. 遍历是二叉树上最重要的运算之一,是二叉树上进行其它 ...
- python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...
[Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...
最新文章
- Go 为什么这么“快”
- android 广告弹出层,安卓广告活动弹窗控件 android-adDialog
- 报表控件NCreport教程:子查询系统设计
- MySQL(26)--- 索引
- MINIGUI图形界面开发入门,交叉编译,移植
- java 日历工具_java中强大的时间处理工具:Calendar类(日历类)
- 快速查找Hashtable中的元素
- Leetcode 235.二叉搜索树的最近公共祖先
- 微软Silverlight 3正式版
- 修改帝国cms验证码 每个都不一样
- Python数据分析入门(十九):绘制散点图
- 免费PR转场 多种创意图形转场过渡PR动态图形模板MOGRT转场
- 《 浩海技术 Ghost XP SP3 快速装机版 V14.0 》 世界杯特别纪念版
- VTN线下体验店 汇聚全球高端品牌 打造非凡购物体验
- 超链接中 utm_source, utm_medium 等参数的含义是什么?
- 数据库入门day06之联接查询(脑图+详解)
- python plt图片保存emf类型_matplotlib---保存图片出现的问题
- 【论文笔记】Neural Relation Extraction with Multi-lingual Attention
- 致我们终将逝去的高考
- “量子XX”,是怎么被玩坏的?
热门文章
- 论文阅读:ICCV2021 TransReID: Transformer-based Object Re-Identifification
- JavaScript保姆级教程
- 29python腾讯位置大数据北京2019五一期间迁出数据
- 高性能两级缓存J2Cache
- TCP/IP详解学习笔记 这位仁兄写得太好了
- 有哪位仁兄可以告诉我,下载软件包的时候出现这种情况是怎么一回事呢?kali虚拟机,希望看见的前辈不吝赐教
- react使用二级(多级)路由(rout)实现局部跳转
- 程序员薪酬高达 462 万元:是怎么回事?
- 什么是GCC,ICC,IAR
- 红米手机root之后 eclipse无法打开data目录