美文网首页HackerRank
HackerRank:Sorting: Bubble Sort

HackerRank:Sorting: Bubble Sort

作者: 流浪山人 | 来源:发表于2019-11-26 22:29 被阅读0次

    题目

    Consider the following version of Bubble Sort:

    for (int i = 0; i < n; i++) {

    for (int j = 0; j < n - 1; j++) {
        // Swap adjacent elements if they are in decreasing order
        if (a[j] > a[j + 1]) {
            swap(a[j], a[j + 1]);
        }
    }
    

    }
    Given an array of integers, sort the array in ascending order using the Bubble Sort algorithm above. Once sorted, print the following three lines:

    Array is sorted in numSwaps swaps., where is the number of swaps that took place.
    First Element: firstElement, where is the first element in the sorted array.
    Last Element: lastElement, where is the last element in the sorted array.
    Hint: To complete this challenge, you must add a variable that keeps a running tally of all swaps that occur during execution.

    For example, given a worst-case but small array to sort: we go through the following steps:

    swap a
    0 [6,4,1]
    1 [4,6,1]
    2 [4,1,6]
    3 [1,4,6]
    It took swaps to sort the array. Output would be

    Array is sorted in 3 swaps.
    First Element: 1
    Last Element: 6
    Function Description

    Complete the function countSwaps in the editor below. It should print the three lines required, then return.

    countSwaps has the following parameter(s):

    a: an array of integers .
    Input Format

    The first line contains an integer, , the size of the array .
    The second line contains space-separated integers .

    Constraints

    Output Format

    You must print the following three lines of output:

    Array is sorted in numSwaps swaps., where is the number of swaps that took place.
    First Element: firstElement, where is the first element in the sorted array.
    Last Element: lastElement, where is the last element in the sorted array.
    Sample Input 0

    3
    1 2 3
    Sample Output 0

    Array is sorted in 0 swaps.
    First Element: 1
    Last Element: 3
    Explanation 0
    The array is already sorted, so swaps take place and we print the necessary three lines of output shown above.

    Sample Input 1

    3
    3 2 1
    Sample Output 1

    Array is sorted in 3 swaps.
    First Element: 1
    Last Element: 3
    Explanation 1
    The array is not sorted, and its initial values are: . The following swaps take place:

    At this point the array is sorted and we print the necessary three lines of output shown above.

    题目解析

    核心就是冒泡排序以及数组取第一个值和最后一个值,同时注意slice的用法
    语法
    class slice(stop)
    class slice(start, stop[, step])
      参数说明
    start--起始位置 默认为None
    stop--结束位置 自定义
    step--间距 默认为None间距为1

    Answer

    #!/bin/python3
    
    import math
    import os
    import random
    import re
    import sys
    
    # Complete the countSwaps function below.
    def countSwaps(a):
        i=0
        j=0
        n=len(a)
        sw=0
        for  i  in range(n):
            for j in range(n-1):
                if a[j] > a[j + 1]:
                    a[j] ,a[j + 1]=a[j + 1],a[j]
                    sw+=1
        print("Array is sorted in %d swaps." %sw)
        print("First Element: %d" %a[0])
        print("Last Element: %d" %a[-1])
    
    
    if __name__ == '__main__':
        n = int(input())
    
        a = list(map(int, input().rstrip().split()))
    
        countSwaps(a)
    
    

    相关文章

      网友评论

        本文标题:HackerRank:Sorting: Bubble Sort

        本文链接:https://www.haomeiwen.com/subject/bkquwctx.html