首页 > 编程语言 > 详细

排序算法的一些应用

时间:2019-07-20 20:24:18      阅读:106      评论:0      收藏:0      [点我收藏+]

技术分享图片

思路:

技术分享图片

#include<iostream>
#include<vector>
using namespace std;
class ThreeColor {
public:
    vector<int> sortThreeColor(vector<int> &A, int n)
    {
        int f,r,i,temp;
        //遍历之前数组的左设置一个为空的0区,数组右侧设置一个为空的2区
        for(i=f=0,r=n-1;i<=r;i++)//f指向0区的下一位置,r指向2区的下一位置
        {
            if(A[i]==0)//当前值是0,把当前值和0区的下一个位置的元素进行交换,0区向后扩一个位置
            {
                temp=A[f];
                A[f]=A[i];
                A[i]=temp;
                f++;
                //因为是从前向后遍历,所以从前面换来的数字已经遍历过,无需从新遍历
            }
            if(A[i]==2)//当前值是2,把当前值和2区的前一个位置的元素进行交换,2区向前扩一个位置
            {
                temp=A[r];
                A[r]=A[i];
                A[i]=temp;
                r--;
                i--;//从后面换来的数字还没有遍历过,需从新遍历
            }
        }
        return A;
    }
};
int main()
{
    int a[6]={1,2,0,2};
    vector<int> b(a,a+4);
    ThreeColor c;
    c.sortThreeColor(b,4);
    for(int i=0;i<4;i++)
        cout<<b[i]<<" ";
    cout<<endl;
    return 0;
}

技术分享图片

 

排序算法的一些应用

原文:https://www.cnblogs.com/tianzeng/p/11218875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!