三色排序 -- 算法小结

来源:互联网 发布:子网网络号怎么算 编辑:程序博客网 时间:2024/04/28 20:42

题目描述:有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序。

给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。

测试样例:
[0,1,1,0,2,2],6
返回:[0,0,1,1,2,2]

import java.util.*;public class ThreeColor {    public int[] sortThreeColor(int[] A, int n) {        // write code here        int left = 0;        int right = n-1;        for(int i=0;i<n;i++){            if(right<i){                break;            }            else if(A[i] == 0 &&left<=right){                change(A,left,i);                left++;            }             else if(A[i] == 2 &&left<=right){                change(A,right,i);                right--;                i--;            }        }        return A;    }     public void change(int[] A,int a,int b){            if(a!=b){                int tem =A[a];                A[a] = A[b];                A[b] = tem;            }        }}

这里写图片描述

原创粉丝点击