zoukankan      html  css  js  c++  java
  • 如何取出一个列表最大的前几位数

    如何取出一个列表最大的前几位数,传统的做法是先对这个数组进行冒泡排序法,然后取出前几位即可。

    但是冒泡排序最大的问题就是循环次数太多,有没有什么办法只循环一次就可以的呢。

    如下这个代码就是只循环一次数组,就完成了判断。其实本质上也是冒泡排序,只是冒泡的,不是原始数组,而是存放最大值的数组。

    什么意思,先看看代码:

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("Hello, 世界")
    
    	var maxNums [3]int
    	var nums []int = []int{1, 123, 8, 9, 10, 2, 33, 1, 0, 2, 44, 91, 2, 12, 446, 8, 2, 34, 6, 228}
    
    	for _, n := range nums {
    		for i := 0; i < 3; i++ {
    			if n > maxNums[i] {
    				for l:=2; l > i; l-- {
    					maxNums[l] = maxNums[l-1]
    				}
    				maxNums[i] = n
    				//fmt.Println(i, "=>", n)
    				break
    			}
    		}
    	}
    	
    	fmt.Println(maxNums)
    }
    

      

    也就是说,先定义一个存放最大值的数组列表,然后每次在需要往数组里面放最大值的时候,再对该数组进行冒泡排序,保证放进去的数字,都是按照大小排序的当前所知的最大数字。

    * 这样和直接对原始数组进行冒泡排序有几个好处:

    - 仅仅当需要进行冒泡排序的数字,才会进入冒泡排序循环,效率更高。

    - 如果原始数据是某些列表对象,不需要在排序之前,把要排序的原始数据从列表对象中读取出来,节省了代码。

  • 相关阅读:
    Setting up a Reverse Proxy using IIS, URL Rewrite and ARR
    Compare xml files using C# LINQ
    ABAP术语-Authorization Object
    ABAP术语-Authorization Check
    ABAP术语-Authorization
    ABAP术语-Application Server
    ABAP术语-Application
    ABAP术语-APO (Advanced Planner and Optimizer)
    ABAP术语-ALE
    ABAP术语-Accounting Document
  • 原文地址:https://www.cnblogs.com/yzhch/p/9413470.html
Copyright © 2011-2022 走看看