美文网首页程序员
算法--三色球分类

算法--三色球分类

作者: reedthinking | 来源:发表于2017-06-17 17:39 被阅读0次

现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右,依次是一些红球、一些白球、一些蓝球。

public class DutchNationalFlag {

    private void swap(int[] a, int index1, int index2) {
        int temp = a[index1];
        a[index1] = a[index2];
        a[index2] = temp;
    }

    public void dutchNationalFlag(int[] a, int n) {
        //红色游标
        int left = 0;
        //蓝色游标
        int right = n - 1;
        //白色游标
        int cur = 1;
        while (cur <= right) {
            if (a[cur] == 0) { //红色
                swap(a, left, cur);
                left++;
            } else if (a[cur] == 1) { //白色
                cur++;
            } else { //蓝色
                swap(a, cur, right);
                right--;
            }
        }
    }

    public static void main(String[] args) {
        int[] a = { 0, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1 };
        DutchNationalFlag dFlag = new DutchNationalFlag();
        dFlag.dutchNationalFlag(a, a.length);
        for (int value : a) {
            System.out.print(value);
            System.out.print(" ");
        }
    }
}

相关文章

  • 算法--三色球分类

    现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右,依次是一些红球、一些白球...

  • 分类算法与数据挖掘

    ################分类算法与数据挖掘---也就是回归于分类算法--对应于Y的0/1算法 ####分类...

  • 2019-04-25 索引

    一. 索引作用 二. 索引的种类(算法) 三. B树 基于不同的查找算法分类介绍 四. 在功能上的分类 4.1 辅...

  • iOS 双色球 大乐透 计算注数与金额 胆拖

    1.计算双色球注数需要用到排列组合算法固定公式 2.计算双色球普通选择的注数 2.计算双色球胆拖选择的注数

  • 大数据算法:分类算法

    KNN分类算法 KNN算法,即K近邻(K Nearest Neighbour)算法,是一种基本的分类算法。其主要原...

  • 逻辑回归

    逻辑回归是一种解决分类问题的机器学习算法。 逻辑回归可以视为回归算法也可以视为分类算法,但通常用于分类,#####...

  • [Python数据挖掘入门与实践]-第二章用scikit-lea

    近邻算法分类-找离得近的 常用的三种距离

  • sklearn的常用函数以及参数——1. 分类算法

    sklearn可实现的函数或者功能有以下几种: 分类算法回归算法聚类算法降维算法模型优化文本预处理其中分类算法和回...

  • KNN算法介绍

    一、算法介绍 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最...

  • 3.1分类和表达式

    分类 逻辑回归算法(Logiistic Regression)目前最流行,使用最广泛地一种学习算法。使用分类算法的...

网友评论

    本文标题:算法--三色球分类

    本文链接:https://www.haomeiwen.com/subject/vokbqxtx.html