码迷,mamicode.com
首页 > 其他好文 > 详细

Sort Colors

时间:2016-07-13 09:21:33      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

第一种思路是计数排序,不过需要两趟才能完成。第二种思路是定义两个index,每次将红色交换至最前,将蓝色交换至最后,白色保持不变,很巧妙的思路。

技术分享
void sortColors(int A[], int n)
      {
          int counts[3] = { 0 };
          for (int i = 0; i < n; i++)
              counts[A[i]]++;

          for (int i = 0,index=0; i < 3;i++ )
          for (int j = 0; j < counts[i]; j++)
              A[index++] = i;
      }

      void sortColors1(int A[], int n)
      {
          int red = 0, blue = n - 1;

          for (int i = 0; i < n;)
          {
              if (A[i] == 0)
                  swap(A[i++], A[red++]);//将红色交换至最前面
              if (A[i] == 2)
                  swap(A[i], A[blue--]);//注意此时i不自加
              else
                  i++;
          }
      }
View Code

 

Sort Colors

标签:

原文地址:http://www.cnblogs.com/573177885qq/p/5665657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!