1185 特殊排序

/*
使用快排实现

题目描述:
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
输入:
输入第一行包括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;
}

时间: 2024-10-25 18:10:28

1185 特殊排序的相关文章

【C语言】九度OJ机试题源码

题库:http://ac.jobdu.com/tutorialproblems.php 题号1202排序 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 /*递增排序*/ 6 int compInc(const void *a,const void *b) 7 { 8 return *(int *)a-*(int *)b; 9 } 10 11 int main() 12 { 13 int n

hihoCoder#1185 : 连通性&#183;三 tarjan求强联通分量 缩点 dfs/拓扑排序求路径和最大值

题目链接: http://hihocoder.com/problemset/problem/1185# 题意: n个点,每个点有一个权值,m条有向边,从1出发,每走到一个点, 就吃掉这个点的草,当没有可以到达的草场或是能够到达的草场都已经被吃光了之后就要返回到1了.求最多可以吃掉多少草. 思路: 提示里面讲的挺好的 如果草场是一个强连通图,那么我们只要走到任意一点,就可以把其他所有的草场都走一遍,并且可以选择任意一个点作为终点.所以把强联通块缩成一个点 因为一个强连通块会被缩成一个点,那么我们可

题目1185:特殊排序

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

hihoCoder #1185 : 连通性&#183;三(强联通分量+拓扑排序)

#1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出去,就拜托小Hi和小Ho忙帮放牧. 约翰家一共有N个草场,每个草场有容量为W[i]的牧草,N个草场之间有M条单向的路径. 小Hi和小Ho需要将牛羊群赶到草场上,当他们吃完一个草场牧草后,继续前往其他草场.当没有可以到达的草场或是能够到达的草场都已经被吃光了之后,小hi和小Ho就把牛羊群赶回家. 一开

1185:单词排序

传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1185 1185:单词排序 时间限制: 1000 ms         内存限制: 65536 KB提交数: 4366     通过数: 2140 [题目描述] 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次.(区分大小写) [输入] 一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔.数据不

九度oj 题目1185:特殊排序

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

模板化的七种排序算法,适用于T* vector&lt;T&gt;以及list&lt;T&gt;

最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板纯属于偷懒,更方便于测试代码的有效性,等代码写完也懒得去改了.下面开始介绍这段代码,有什么不对的地方欢迎前来指正. 一共写了七种排序,插入排序InsertSort.堆排序HeapSort.快速排序QuickSort.合并排序MergeSort,计数排序CountingSort,基数排序RadixSo

Linq 动态查询排序

Linq的排序一般是这样写的: query.OrderBy(x => x.Tel).Skip(0).Take(10); 实际使用中排序字段可能是通过字符类型的参数来设置的,于是想这样实现: query.OrderBy(x=>x.GetType().GetField("Tel")).Skip(0).Take(10); 上面的写法是无法编译通过的,此路不通,于是找到一个order扩展类: 1 using System; 2 using System.Linq; 3 using

排序算法大集锦_各种排序算法性能比较

对10000个1-10000的随机数进行排序,并显示出运行时间 数组是用以前用VC++&MatLab生成的,比较长...哈哈,感受一下计算机的速度! #include <stdio.h> #include <string.h> #include <stdlib.h> #include <limits.h> #include <malloc.h> #include <time.h> int a[10000]={ 5282,330