码迷,mamicode.com
首页 > 编程语言 > 详细

1185 特殊排序

时间:2015-03-13 23:49:42      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:c语言   快速排序   

/*
使用快排实现

题目描述:
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
输入:
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。
接下来的一行有N个整数。
输出:
可能有多组测试数据,对于每组数据,
第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。
第二行将排序的结果输出。
样例输入:
4
1 3 4 2
样例输出:
4
1 2 3
提示:
如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。
*/
# include <stdio.h>

void QuickSort(int * a, int low, int high)
{
	int left,right,pivot;
	pivot = a[low];
	left = low;
	right = high;
	while(low < high)
	{
		while(low < high && a[high] >= pivot)
			high--;
		a[low] = a[high];
		while(low < high && a[low] <= pivot)
			low++;
		a[high] = a[low];
	}
	a[low] = pivot;
	if(left != low)
		QuickSort(a, left, low-1);
	if(right != high)
		QuickSort(a, low+1, right);
}

int main(void)
{
	int n;
	while(scanf("%d", &n) != EOF)
	{ 
		getchar();    //吸收回车符。
		int i,a[1010];
		for(i = 0; i < n; i++)
		{
			scanf("%d", &a[i]);
		}
		if(n == 1) 
		{
			printf("-1\n");
			continue;
		}else
		{
			QuickSort(a, 0, n-1);
			printf("%d\n", a[n-1]);
			for(i = 0; i < n - 1; i++)
			{
				printf("%d ",a[i]);
			}
			printf("\n");
		}
	}
	return 0;
}

1185 特殊排序

标签:c语言   快速排序   

原文地址:http://blog.csdn.net/xu758142858/article/details/44246775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!