插入排序

转载 2015年07月08日 00:13:10


Description

每次选择序列最左边的数,然后将其插入到序列中任意一个位置。求至少需要重复进行多少次上述操作,才可以将序列变为一个递增序列。

Input

输入的第一行包含一个整数T (T > 0),表示一共有T组测试数据.
对于每组测试数据,第一行包含一个整数n (1 ≤ n ≤ 105),表示这个序列中一共有n个整数。第二行包含n个各不相同的整数(这些整数均在[1, 109]范围内),依次描述了这个序列中的各个数。

Output

对于每组测试数据,输出一个整数,表示至少需要重复进行多少次上述操作,才可以将这个序列变为一个递增序列。

Sample Input

3
3
1 2 3
3
1 3 2
5
1 5 4 3 2

Sample Output

0
2
4

HINT

Source

中南大学第八届大学生程序设计竞赛热身赛

思路:设m为以最后一个数结尾的连续的上升序列的长度。答案就是n-m。

例如:求m:如果是1 5 2 3 4,就是3 。  3,2,1就是1。

因为你只能最左边的数移动那么最优策略就是保持我说的最靠右的那段上升子列不动剩下的每个数动一下就行了。

#include<iostream>
#include<math.h>
using namespace std;
int a[100005];
main()
{
   int t;
   scanf("%d",&t);
   while(t--)
   {
     int n;
     scanf("%d",&n);
     for(int i=0;i<n;i++)
     {
      scanf("%d",&a[i]);
     }
     int ans=1;
     for(int i=n-2;i>=0;i--)
     {
      if(a[i]<a[i+1])ans++;
      else break;
     }
     printf("%d\n",n-ans);
   }
}

一步步地分析排序——插入排序

一步步地分析插入排序
  • u010707039
  • u010707039
  • 2016年09月28日 15:14
  • 1214

插入排序复杂度为什么不是nlog(n)

插入排序是一种很基本的排序,其复杂度为O(n2)O(n^2),在大一学编程时没有多想,为什么不能利用二分查找改进为O(nlogn)呢O(n\log n)呢?问题描述:我们都知道插入排序就是在已有的序列...
  • q__y__L
  • q__y__L
  • 2016年12月21日 17:15
  • 738

C++模板插入排序

插入排序的C++模板实现
  • zhangxiao93
  • zhangxiao93
  • 2016年03月07日 20:19
  • 548

【算法】插入排序的递归实现

int data[10] = {5,4,3,6,7,8,56,3,234,2}; //输入元素为: data需要排序的数组 start需要排序的数组的起始下标 end需要排序的,无序序列的首元素的下标...
  • chenglibin1988
  • chenglibin1988
  • 2013年05月19日 15:07
  • 4110

单链表实现插入排序

//单链表实现插入排序,基本思想是先生成一个空链表,然后将待排序链表的结点依次插入 //这个空链表中,所有结点都插入完毕后,这个新生成的链表就是所需的有序链表 typedef struct node ...
  • Sun19910114
  • Sun19910114
  • 2014年08月22日 23:18
  • 1872

插入排序的递归实现

#include void Insert(int *a,int n)//把数组a的第n个数插入前n-1个数中,注意前n-1个数已经是排好序的了 { int i=n-1;...
  • tzasd89812
  • tzasd89812
  • 2012年06月07日 21:42
  • 1633

插入排序实例

public class InsertSort { public static void main(String[] args) { // TODO Auto-generated...
  • qq_22222499
  • qq_22222499
  • 2016年06月16日 20:59
  • 198

插入排序——深入浅出(图解)

一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将...
  • as02446418
  • as02446418
  • 2015年08月17日 20:46
  • 1831

插入排序算法详解及实现

插入排序相对冒泡排序而言是一种较为快捷方便的排序算法。 冒泡排序:http://blog.csdn.net/llzk_/article/details/51547923 插入排序原...
  • LLZK_
  • LLZK_
  • 2016年06月10日 20:30
  • 10568

STL中插入排序的实现

虽然大二时已经学习了几种排序算法,但是所选教材对算法的讲解不时很详细,相关的优化也没有说明,都是比较基础的实现,所以找了本书重新看了下。插入排序在STL中是接收Iterator来排序的,不是操作一个向...
  • u012851419
  • u012851419
  • 2016年05月17日 10:18
  • 739
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:插入排序
举报原因:
原因补充:

(最多只允许输入30个字)