VSC++: 升降分段

默认分类 | 2020-03-16 11:00:35 | 阅读 975 次 | 评论(0)

有心栽花花也开,无心插柳柳成荫,这个可用于分治排序,速度一定会提高.

void 升降分段(int* sz, int l)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499776&pid=2721823&page=1#pid2721823
	int j = 1, z = 0; bool k = sz[0] >= sz[1], k1 = true;
	while (++j < l)
	{
		k1 = sz[j] >= sz[j + 1];
		if ((!k && !k1) || (k && k1));
		else
		{
			while (z <= j)cout << sz[z++] << ends;//效果1
			if ((j + 2) < l)
				k = sz[j + 1] > sz[j + 2];//效果2
			//k = k1, --j, --z;//效果3
			cout << endl;
		}
	}
	if ((j - z) > 1)while (z < j)cout << sz[z++] << ends;
}
	int aa[]{1,20,30,12,3,5,7,4,6,100};
	升降分段(aa, sizeof(aa) / sizeof(aa[0]));
无标题1.png (上传于2020-03-16 11:00:35)
无标题1.png

无标题1.png (上传于2020-03-16 15:39:44)
无标题1.png








文章评论,共0条
游客请输入验证码