leetcode - Sort Colors

本文介绍了一种用于快速排序包含三种特定颜色元素数组的算法。通过将数组分为三部分,分别处理颜色为0、1(默认为白色)和2的元素,实现高效的排序过程。该算法特别适用于处理具有三个不同元素类型的问题,并通过实例演示了其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 1 class Solution {
 2 public:
 3     void sortColors(int A[], int n) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         int i =0 ,j = n-1;
 7         while (i<n && A[i]==0)
 8             i++;
 9         while (j>=0 && A[j]==2)
10             j--;
11         int tmp;
12         for (int k=i; k<=j; k++){
13             if (A[k]==0){
14                 A[k]= A[i];
15                 A[i] = 0;
16                 while (i<n && A[i]==0)
17                     i++;
18                 k = i-1;
19                 continue;
20             }
21             if (A[k]==2){
22                 A[k] = A[j];
23                 A[j] = 2;
24                 while (j>=0 && A[j]==2)
25                     j--;
26                 k--;
27                 continue;
28             }
29         }
30         return;
31     }
32 };

 

 

 

转载于:https://www.cnblogs.com/zhanghs/p/3404153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值