首页 > 其他 > 详细

Sort Colors

时间:2016-07-13 09:20:46      阅读:238      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!