分享
  1. 首页
  2. 文章

Golang 排序

发条家的橙子 · · 1223 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

215. 数组中的第K个最大元素

1、使用sort源码

func findKthLargest(nums []int, k int) int {
 sort.Ints(nums)
 //fmt.Println()
 return nums[len(nums)-k]
}

2、冒泡排序

func bubble_sort(nums []int) []int {
 for i:=len(nums)-1; i >=0; i-- {
 for j:=0; j<i; j++ {
 if nums[j] < nums[j+1] {
 nums[j], nums[j+1] = nums[j+1], nums[j]
 }
 }
 }
 return nums
}
func findKthLargest(nums []int, k int) int {
 sortnums:= bubble_sort(nums)
 return sortnums[k-1]
}

3、选择排序

对比n后面所有数,将最大的和n交换来确定n位置的值

func findKthLargest(nums []int, k int) int {
 for j := 0; j <= len(nums)-1; j++ {
 max := nums[j]
 tag := 0
 for i:=j+1; i<len(nums); i++{
 if max < nums[i] {
 max = nums[i]
 tag = i
 }
 }
 if tag != 0 {
 nums[j], nums[tag] = nums[tag], nums[j]
 // 排到k时直接返回
 if j+1 == k {
 return nums[k-1]
 }
 }
 }
 return nums[k-1]
}

方法四:插入排序

func insertSort(nums []int, k int) int {
 for i:= 1; i < len(nums); i++ {
 insertNum := nums[i]
 j:=i-1
 for j>=0 && nums[j] < insertNum{
 nums[j+1] = nums[j]
 j--
 }
 if j + 1 != i{
 nums[j+1] = insertNum
 }
 }
 return nums[k-1]
}

方法五:快速排序

func QuickSort(left, right int, nums []int) []int {
 l := left
 r := right
 pivot := nums[(l+r)/2]
 for l < r {
 for nums[l] > pivot{
 l++
 }
 for nums[r] < pivot {
 r--
 }
 if l >= r {
 break
 }
 nums[l], nums[r] = nums[r], nums[l]
 //fmt.Println(nums)
 if nums[l] == pivot {
 r--
 }
 if nums[r] == pivot {
 l++
 }
 }
 if l == r {
 l++
 r--
 }
 if left < r{
 QuickSort(left, r, nums)
 }
 if right > l {
 QuickSort(l, right, nums)
 }
 return nums
}
func findKthLargest(nums []int, k int)int {
 // 方法五:快速排序
 return QuickSort(0 , len(nums)-1, nums)[k-1]
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:发条家的橙子

查看原文:Golang 排序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1223 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏