Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >31-三色旗问题(荷兰国旗问题)

31-三色旗问题(荷兰国旗问题)

作者头像
lexingsen
发布于 2022-02-25 01:06:49
发布于 2022-02-25 01:06:49
68700
代码可运行
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
运行总次数:0
代码可运行

思路:

使用三个指针维护三个区间

代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>


typedef enum {
    BLUE = 1,
    WHITE = 2,
    RED = 3
} Color;

Color arr[] = {RED, BLUE, RED, WHITE, WHITE, RED, WHITE, BLUE, BLUE, RED, WHITE};

void Swap(Color* arr, int i, int j) {
    Color t = arr[i];
    arr[i] = arr[j];
    arr[j] = t;
}

void Print(Color* arr, int n) {
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

void Sort(Color* arr, int n) {
    
    int i = 0;
    int j = 0;
    int k = n - 1;
    while (i <= k) {
        if (arr[i] == BLUE) {
            Swap(arr, i++, j++);
        } else if (arr[i] == WHITE) {
            i++;
        } else if (arr[i] == RED) {
            Swap(arr, i, k--);
        }
    }
    return;
}

int main() {
    int n = sizeof(arr) / sizeof(arr[0]);
    Print(arr, n);
    Sort(arr, n);
    Print(arr, n);
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Array - 75. Sort Colors
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.
ppxai
2020/09/23
4320
深入浅出一下从电子商务到社交网络:排序算法在实际业务中的关键角色——动画可视化排序算法题试炼
可知,在循环过程中,每个元素都与它后面的所有元素比较一次(即所有元素都两两比较一次),比较次数之和为(n-1)+(n-2)+…+1,所以总比较次数是n(n-1)/2。
盛透侧视攻城狮
2025/04/27
570
深入浅出一下从电子商务到社交网络:排序算法在实际业务中的关键角色——动画可视化排序算法题试炼
【指针进阶三】实现C语言快排函数qsort&回调函数
因为cmp比较函数需要使用者自行设计,所以对于不同的使用者在qsort函数里传给cmp函数的参数类型可能是任何类型的指针,所以在cmp比较函数内得用void*类型的指针来接收,使用时只需将void* 类型的指针做出相应的强转即可。
MicroFrank
2023/01/16
5080
【C语言经典例题】——程序员必须会的经典基础例题(三)
思路: 我们可以看到,三角的两边都是1,并且从第二行(从0开始算)开始,两边之间的数字,都是上一行的两位数字之和,比如第三行的数字3,等于上一行的1+2,等等。如此,把它看成一个二维数组,便可直接入手
诺诺的包包
2023/02/20
7080
常见排序算法
Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
花落花相惜
2021/11/25
7330
数据结构4——linuxC(二叉树和排序算法)
对于二叉树而言,有如下特性: 1.第i层上,最多有2^(i-1)个节点。 2.高度为k的二叉树,最多有2^k-1个节点。 3.假设叶子数目为n0,度为2的节点数目为n2,则有:n0= n2+1
天天Lotay
2022/12/02
4270
数据结构4——linuxC(二叉树和排序算法)
第三节——从深层剖析指针(让你不再害怕指针)
可以发现数组名和数组首元素的地址打印出的结果⼀模⼀样,数组名就是数组首元素(第⼀个元素)的地址。
egoist祈
2025/01/23
540
第三节——从深层剖析指针(让你不再害怕指针)
华北水利水电大学-C程序设计作业
从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。其中学生信息包括学号、姓名、年龄、地址。要求:程序中有save()、read()函数分别用于保存学生的信息和读取学生的信息。
啊QQQQQ
2024/11/19
520
华北水利水电大学-C程序设计作业
C语言一百例(71-80)
71,题目:编写input()和output()函数输入,输出5个学生的数据记录。 程序源代码:
紫禁玄科
2022/03/24
3650
自定义类型详解(1)
之前我们见过了 #pragma 这个预处理指令,这里我们再次使用,可以改变我们的默认对齐数。
waves浪游
2024/01/22
1220
自定义类型详解(1)
数据结构——排序(C语言实现)
我们在玩扑克牌的时候,每次抓一张牌都要放在适合的位置,比如我就喜欢左边大右边小,这就算是插入排序。 例:
有礼貌的灰绅士
2023/03/28
9570
数据结构——排序(C语言实现)
学习——理解指针(3)
通过之前的学习,我们了解了指针,int*是整型指针,指向的是整型;那么,指向字符型的指针就是字符指针,即char*
星辰与你
2024/10/17
700
学习——理解指针(3)
大佬的快速排序算法,果然不一样
快速排序,正如它的名字所体现,是在实践中已知的最快的排序算法,平均运行时间为O(NlogN),最坏的运行时间为O(N^2)。算法的基本思想很简单,然而想要写出一个高效的快速排序算法并不是那么简单。基准的选择,元素的分割等都至关重要,如果你不清楚如何优化快速排序算法,本文你不该错过。
IT大咖说
2019/05/07
6260
模仿qsort实现一个通用的冒泡排序
qsort在前面我们讲到底层逻辑是快速排序的方式,是不是可以发现有了qsort来进行排序的话,就更加的方便快捷,我们在使用的时候
用户11352420
2024/11/07
630
模仿qsort实现一个通用的冒泡排序
今天发疯,写一下学校的数组作业
如果是对10个数字进行冒泡排序,那么需要进行9轮比较,每轮比较需要进行9+8+...+1次比较
用户11039545
2024/03/28
930
今天发疯,写一下学校的数组作业
十种排序方法
在C语言中,有多种排序算法可供选择,每种都有其独特的特点和应用场景。以下是几种常见的排序算法及其在C语言中的总结:
ljw695
2024/10/18
1390
算法-经典趣题-三色旗
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/161
joshua317
2021/10/18
5600
如何管理和维护算法族?只需知道策略模式
同样是排序算法,你可以选择冒泡排序、选择排序、插入排序、快速排序等等,也即是说,为了实现排序这一个目的,有很多种算法可以选择。这些不同的排序算法构成了一个算法族,你可以在需要的时候,根据需求或者条件限制(内存、复杂度等)适时选择具体的算法。
用户6557940
2022/07/24
3630
如何管理和维护算法族?只需知道策略模式
拿捏指针(三)
在这之前我们学习了《拿捏指针(一)》,《拿捏指针(二)》没看过的可以去看看哟,接下里我们将指针最后一篇,《拿捏指针(三)》,看完直接捏爆指针。
秋邱
2024/10/09
920
拿捏指针(三)
【海贼王的数据航海】排序——冒泡|快速|归并排序|总结
基本思想:所谓交换,就是根据序列中两个记录的键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。
枫叶丹
2024/06/04
1050
【海贼王的数据航海】排序——冒泡|快速|归并排序|总结
相关推荐
Array - 75. Sort Colors
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验