从一个数组里面获取最大的n个
算法思路
首先获取前n个数字,进行排序,之后遍历原数组,与新数组中最小的进行比较,如果大于新数组中的最小值,则进行替换,并将新数组再次排序,一次类推
- go语言实现
package main
import (
"fmt"
"sort"
)
func main() {
var i int
a := []int{2, 4, 15, 6, 57, 8, 9, 23, 2, 43, 4352, 56, 1, 1, 234, 124543, 45, 656, 67, 878, 34}
b := a[0:5]
sort.Ints(b)
for i = 5; i < len(a); i++ {
if a[i] > b[0] {
b[0] = a[i]
sort.Ints(b)
}
}
fmt.Println(b)
return
}
- python语言实现
1 import sys
2 import os
3
4 def sort_array(a):
5 b = a[0:5]
6 b.sort()
7 for i in a[5:]:
8 if i > b[0]:
9 b[0] = i
10 b.sort()
11 print(b)
12
13 return
14
15 a = [2,4,8,123,345,567,734,23,6,11,6746,6]
16 sort_array(a)