Sort Colors

来源:互联网 发布:目前数据库证书有哪些 编辑:程序博客网 时间:2024/05/17 08:23
public class Solution {    public void sortColors(int[] A) {        int left0, right0;        int left1, right1;        int left2, right2;                int n = A[0];        if(n == 0){            left0 = right0 = 0;            left1  = right1 = 1;            left2 = right2 = 1;        }        else if(n == 1){            left0 = right0 = 0;            left1 = right1 = 0;            left2 = right2 = 1;        }        else if(n == 2){            left0 = right0 = 0;            left1 = right1 = 0;            left2 = right2 = 0;        }        int tmp;        for(int i = 1; i < A.length; i++){            switch(A[i]){               case 0:{                   tmp = A[i];                   for(int j = i-1; j >= left1; j--){                           A[j+1] = A[j];                    }                    A[left1] = tmp;                    right0 = left1;                    left1++;                    right1++;                    left2++;                    right2++;                   break;               }               case 1:{                   tmp = A[i];                    for(int j = i-1; j >= left2; j--){                           A[j+1] = A[j];                    }                    A[left2] = tmp;                    right1 = left2;                    left2++;                    right2++;                   break;               }               case 2:{                   right2++;                   break;               }            }        }    }}

网上别人更简单的代码:赞!!!

public void sortColors(int[] A) {    int i=-1, j=-1, k=-1;    for(int p = 0; p < A.length; p++)    {        if(A[p] == 0)        {            A[++k]=2;            A[++j]=1;            A[++i]=0;        }        else if (A[p] == 1)        {            A[++k]=2;            A[++j]=1;        }        else if (A[p] == 2)        {            A[++k]=2;        }    }}

and:

public void sortColors(int[] A) {    int i=-1, j=-1;    for(int p = 0; p < A.length; p++) {       int v = A[p];       A[p] = 2;       if (v == 0) {          A[++j] = 1;          A[++i] = 0;       }       else if (v == 1) {           A[++j] = 1;       }    }}


0 0
原创粉丝点击