前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >选择排序

选择排序

作者头像
皮大大
发布2021-03-02 14:38:37
2920
发布2021-03-02 14:38:37
举报
文章被收录于专栏:机器学习/数据可视化

选择排序

思想
  • 将数据分成两个部分:前面排好序和后面待排序的
  • 从没有排序的数据选择出一个最小的数据,放在前面排好序的后面
  • 不稳定
时间复杂度
  • 最坏时间复杂度:O(n^2)
  • 最优时间复杂度:O(n^2)

Python实现

代码语言:javascript
复制
def select_sort(alist):
    # 选择排序
    n = len(alist)
    for j in range(0, n-1):
        # 记录最小位置
        min_index = j
        # 内层for循环找到了后面未排序数据的最小值
        for i in range(j+1, n):
            if alist[min_index] > alist[i]:
                # 找出真正最小值的索引,再进行交换
                min_index = i
        alist[j], alist[min_index] = alist[min_index], alist[j]
    return alist

Golang实现

代码语言:javascript
复制
package main

// 算法思想
// 将数据分成两个部分:前面排好序和后面待排序的
// 指定一个基准元素,将基准元素和后面的每个元素进行比较
// 从没有排序的数据(后面未排序)选择出一个最小的数据,放在前面排好序的后面

import "fmt"

func selectSort(numberArray []int) []int{      // 函数的输入是数组,返回值也是数组
	n := len(numberArray)     // 指定数组的长度
	for j := 0; j < n - 1; j++{    // 外层循环控制整个比较轮数
		min_index := j        // 假定最小数的索引的位置
		for i := j+1; i < n; i++{     // 将索引为j的元素同它后面的元素进行比较[j+1, n]
			if numberArray[min_index] > numberArray[i]{    // 如果 指定的最小元素比其后面的元素大,说明较小的元素仍在后面
				min_index = i   // 比较完后,找出最小元素的索引,并且将索引赋值给变量min_index
			}
		}
		// 内层比较完后进行元素互换
		numberArray[j], numberArray[min_index] = numberArray[min_index], numberArray[j]
	}
	return numberArray
}

func main()  {
	selectArray := []int{1,8,9,7,3,5,2,6,4}   // 数组的定义
	fmt.Println("Before:", selectArray)
	selectSort(selectArray)
	fmt.Println("After:", selectArray)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-9-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择排序
    • 思想
      • 时间复杂度
      • Python实现
      • Golang实现
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档