快速排序左右区间序列显示-创新互联

cg

创新互联公司专注骨干网络服务器租用十余年,服务更有保障!服务器租用,服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。【问题描述】

给定一组正整数序列(最多20个正整数序列),利用快速排序算法从小到大排序,输出第一趟排序后的左子区间序列和右子区间序列,中间用’/‘分隔。如果左子区间序列或右子区间序列为空,则相应的空序列用’-'表示。

【输入形式】

正整数序列,以空格分隔,回车结束。

【输出形式】

左子区间序列 / 右子区间序列,数值之间以空格分隔,左右序列之间以’/‘分隔,空序列用’-'表示。

【样例输入】

49 38 65 97 76 13 27 49

【样例输出】

27 38 13/76 97 65 49

【样例输入】

13 38 65 97 76 27 49

【样例输出】

-/38 65 97 76 27 49

C++代码
#includeusing namespace std;
void Quicksortonce(int l, int r, int A[], int& flag) {int left = l, right = r, x = A[l];
	while (left< right) {while (left< right && A[right] >= x)  right--;
		if (left< right)  swap(A[left++], A[right]);
		while (left< right && A[left]< x)  left++;
		if (left< right)  swap(A[left], A[right--]);
	}
	flag = left;
}
int main() {int A[20], flag, cnt = 0;
	while (cin >>A[cnt++]);
	cnt--;
	Quicksortonce(0, cnt - 1, A, flag);
	for (int i = 0; i< cnt; i++) {if (i == flag) {	if (i == 0)  cout<< "-";
			cout<< "/";
			if (i == cnt - 1)  cout<< "-";
		}
		else if (i + 1 == flag)  cout<< A[i];
		else cout<< A[i]<< " ";
	}
	return 0;
}

注:Cg系统第一组测试没有录入\n(回车),故要用此方法读入,此方法在本地无效。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:快速排序左右区间序列显示-创新互联
浏览地址:http://myzitong.com/article/gioej.html