【python公司校招题】

【python摩拜】排序次数?

2019-08-09  本文已影响0人  阿牛02

题目:小摩有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的小摩只会下面这个操作:

  任取数组中的一个数然后将它放置在数组的最后一个位置。

  问最少操作多少次可以使得数组从小到大有序?

输入描述:

首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)

输出描述:

输出一行操作数

code:

n = int(input())

a = input().split()

def quick_sort(lists, left, right):

    if left > right:

        return lists

    low = left

    high = right

    key = lists[left]

    while left < right:

        if left < right and lists[right] >= key:

            right -= 1

        lists[left] = lists[right]

        if left < right and lists[left] <= key:

            left += 1

        lists[right] = lists[left]

    lists[right] = key

    quick_sort(lists, low, left - 1)

    quick_sort(lists, left + 1, high)

    return lists

a1 = a.copy()

a2 = quick_sort(a1, 0, len(a1) - 1)

cnt = 0

j = 0

for i in range(n):

    if a[i] == a2[j]:

        j += 1

        cnt += 1

print(n - cnt)

程序运行结果:

2

上一篇 下一篇

猜你喜欢

热点阅读