zoukankan      html  css  js  c++  java
  • leetcode-不同的排序算法及其运行时间

    解题思路

    排序方法 运行时间
    库函数排序 8ms
    类选择排序 208ms
    冒泡排序 204ms
    堆排序 4ms

    代码

    func findKthLargest(nums []int, k int) int {
        // 库函数排序
        //sort.Ints(nums)
        // 类选择排序
        /*for i:=0;i<len(nums);i++{
            for j:=i+1;j<len(nums);j++{
                if nums[i]>nums[j]{
                    tmp:=nums[i]
                    nums[i] = nums[j]
                    nums[j] = tmp
                }
            }
        }*/
        // 冒泡排序
        /*for i:=0;i<len(nums);i++{
            for j:=0;j<len(nums)-i-1;j++{
                if nums[j]>nums[j+1]{
                    tmp:=nums[j]
                    nums[j] = nums[j+1]
                    nums[j+1] = tmp
                }
            }
        }*/
        // 堆排序
        sortHeap(nums)
        return nums[k-1]
    }
    // 小顶堆, 降序
    func adjustMinHeap(arr []int, i int, length int){
        temp := arr[i]
        for k := 2*i+1;k < length;k = k*2+1{
            if k+1 < length && arr[k] > arr[k+1]{
                k++
            }
            if arr[k] < temp {
                arr[i] = arr[k]
                i = k
            }else {
                break
            }
        }
        arr[i] = temp
    }
    func sortHeap(arr []int)  {
        // 1. 构建大顶堆
        for i := len(arr)/2-1;i>=0;i-- {
            adjustMinHeap(arr,i,len(arr))
        }
        // 2. 交换堆顶与堆尾元素,交换完毕后,将访问不到堆尾
        for j := len(arr)-1;j>0;j-- {
            arr[0],arr[j] = arr[j],arr[0]
            adjustMinHeap(arr,0,j)
        }
    }
    
  • 相关阅读:
    TSP-UK49687
    维度建模的基本原则
    差分约束系统
    随机过程初步
    随机过程——维纳过程
    Xilinx FPGA复位信号设计
    10 Row Abacus
    Python
    FX2LP与FPGA的简单批量回环
    DFT公式的一个简单示例
  • 原文地址:https://www.cnblogs.com/litchi99/p/13504303.html
Copyright © 2011-2022 走看看