//题目1185:特殊排序
//http://ac.jobdu.com/problem.php?pid=1185
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n, temp;
while (cin >> n && n >= 1 && n <= 1000)
{
int * arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
if (n == 1)
cout << arr[0] << endl << "-1" << endl;
else{
//冒泡排序,递增序列
for (int loc = 0; loc < n; loc++)
{
for (int j = n - 1; j > loc; j--)
if (arr[j] < arr[j - 1])
{
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
cout << arr[n - 1] << endl;
for (int i = 0; i < n - 2; i++)
cout << arr[i] << " ";
cout << arr[n - 2] << endl; //这里格式也有要求。。。。这叫贱!
}//end of else
}//end of while
return 0;
}
http://ac.jobdu.com/problem.php?pid=1185
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
另一种解法,用sort(begin,end)函数,包含在<algorithm>库函数中,不需自己写任何排序算法,可以直接调用,非常简便:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n, i;
while (cin >> n && n >= 1 && n <= 1000)
{
int *arr = new int[n];
for (i = 0; i < n; i++)
cin >> arr[i];
if (n == 1)
cout << arr[0] << endl << "-1" << endl;
else
{
sort(arr, arr + n);
cout << arr[n - 1] << endl;
for (i = 0; i < n - 2; i++)
cout << arr[i] << " ";
cout << arr[n - 2] << endl;
}
}//end of while
return 0;
}
//题目1185:特殊排序
//http://ac.jobdu.com/problem.php?pid=1185
#include<stdio.h>
#include<iostream>
using namespace std;
void quicksort(int *a, int low, int high)
{
int left = low, right = high, pivot = a[low];
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()
{
int n;
while (cin >> n && n >= 1 && n <= 1000)
{
int * arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
if (n == 1)
cout << arr[0] << endl << "-1" << endl;
else
{
//快速排序
quicksort(arr, 0, n - 1);
cout << arr[n - 1] << endl;
for (int i = 0; i < n - 2; i++)
cout << arr[i] << " ";
cout << arr[n - 2] << endl;
}//end of else
}//end of while
return 0;
}
快排的速度果然快很多。。。。。。
以下是几种方法的比较,由上到下分别是方法3、2、1: