Algorithms_ThreeColorFlag

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void swap(int a,int b,char *l);
void sort(char *l);

void main()
{
	char ColorLine[]={'r','w','b','b','w','r','b','b','\0'};
	char *c;

	printf("The orginal order:\n");
	for (c=ColorLine;*c!='\0';c++)
	{
		printf("%c ",*c);
	}
	printf("\n");
	sort(ColorLine);
	printf("The ordered order:\n");
	for (c=ColorLine;*c!='\0';c++)
	{
		printf("%c ",*c);
	}
}

void swap(int a,int b,char *l)
{
	char t;
	t=l[a];
	l[a]=l[b];
	l[b]=t;
}
void sort(char *l)
{
	int wFlag=0;
	int bFlag=0;
	int rFlag=strlen(l)-1;
	while (wFlag<=rFlag)
	{
		if (l[wFlag]=='w')
		{
			wFlag++;
		}
		else if (l[wFlag]=='b')
		{
			swap(bFlag,wFlag,l);
			bFlag++;
			wFlag++;
		}
		else
		{
			while(wFlag < rFlag && l[rFlag]=='r')
				rFlag--;
			swap(wFlag,rFlag,l);
			rFlag--;
		}
	}
}

原文链接: https://www.cnblogs.com/legendmaner/archive/2011/09/24/2977037.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Algorithms_ThreeColorFlag

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/33057

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午10:07
下一篇 2023年2月8日 上午10:08

相关推荐