/*
1、第一次用数组+排序实现类似优先队列,心情有点小激动;原来数据结构是这样用的
2、回顾了一下插入排序,再原来有序的数组的情况下,插入新元素的插入排序(插入排序的活用)
3、这里是用到了插入排序的思想,而非完全的插入排序的步骤;正如二分思想,他是一种思想,不要
停留在一种方法上、一种数据结构上。
4、poj 2833 时间复杂度 O(n*n),超时,因为优先队列是由最小(大)堆实现的,时间复杂度O(n*logn)----正好服务优先队列的要求,保证队首(栈顶)
元素的优先级最高,其他元素的优先级顺序不考虑。
5、再插入排序中,增加二分查找的思想是不是效率高一些呢? —— 比较次数会减少,移动次数还是不会减少,因此还是不如堆排序效率高;还是那句话这是一种思想的升华。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int n,pmax,pmin;
void insert_sort(int *a,const int &maxn)
{
int i,j,tmp;
for(i=1;i<maxn;i++)
{
tmp = *(a+i);
for(j=i-1;j>=0;j--)
{
if(*(a+j) <= tmp)