将一个只含0,1,2,的数组按0,1,2的顺序输出

本文介绍了两种方法解决只含0,1,2的数组按0,1,2顺序输出的问题。方法一是两次遍历,先统计数量再赋值,时间复杂度为O(n)。方法二是利用三个指针p0、p1、p2,通过调整指针位置快速完成排序,速度是方法一的两倍。" 108997182,8022024,Docker容器中解决中文输入问题,['docker'],"['Docker', '中文输入', '字符集', 'POSIX', 'C.UTF-8', 'Dockerfile']
摘要由CSDN通过智能技术生成

方法一:
直接遍历两次,第一次统计每类数字的个数;第二次依次给数组按统计的个数赋值; 时间复杂度O(n)
方法二:
利用三个指针p0、p1、p2,分别指向第一个不为0、1、2的数。其中,p0、p1从头开始遍历,p2从数组尾开始遍历。第二种比第一种快一倍
如果三个指针中有任何两个可以互换,即:
即p0向了1,同时p1指向了0
在这里插入图片描述
或者p0指向了2,p2指向了0
在这里插入图片描述
又或者p1指向了2,p2指向了1

在这里插入图片描述
如果,以上三种情况均不是那么说说明三个指针各自不同,则可以直接将每个指针的位置赋上相应的值
在这里插入图片描述

#include<iostream>
#include<vector>

using namespace std;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值