#P1242. Orange的冒泡排序

Orange的冒泡排序

Orange的冒泡排序

题目描述

冒泡排序是一种简单的排序算法,它通过重复遍历待排序的数列,一次比较两个元素,如果他如果前一个比后一个大,则交换之。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

Orange刚刚学完冒泡排序,但老师说,冒泡排序是一种已经被弃用的算法,因为他的时间复杂度太大了!Orange才刚刚学算法,不太清楚时间复杂度这个概念,于是他想到了冒泡排序中交换相邻元素这一操作,他用交换的次数来衡量冒泡排序的时间复杂度。他想知道,对于一个长度为 nn 的序列进行升序排序,冒泡排序的时间复杂度究竟是多少呢?换句话说,你需要求出一次冒泡排序中交换相邻元素的次数。

注意:冒泡排序是一种稳定的排序算法,如果 ai=ai+1a_i = a_{i + 1},则无需交换。

输入格式

输入共包含2行,第1行包含一个整数 nn,表示序列长度,第二行包含 nn 个整数 aia_i,表示要排序的序列。

数据范围: 1n1031 \le n \le 10^3 1ai1031 \le a_i \le 10^3

输出格式

一个整数,表示答案。

样例 #1

样例输入 #1

5
1 2 4 3 5

样例输出 #1

1