介绍
选择排序(Selction Sort)是一种简单直观的排序方法。它的工作原理是:第一次从待排序的数组中选拔出max / min的一个元素,存放在序列的起始位置,然后再从剩余的未排序的元素中找出max / min的一个元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据个数为零。
分部解释一下
1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3)以此类推,直到所有元素均排序完毕。
但是选择排序不是一个稳定的算法
举例
从小到大排序
[5,6,3,1,4,2]
[1,6,3,5,4,2]
[1,2,3,5,4,6]
[1,2,3,5,4,6]
[1,2,3,4,5,6]
一般经过N次操作结束
每次O(N)
总O(N^2)
c++代码
void sort()
{
for(int i = 0;i < n;i ++)
{
int minIndex = i;
for(int j = i + 1;j < n;j ++)
{
if(num[j] < nums[minIndex]) minIndex = j;
}
}
swap(nums[i],nums[minIndex]);//交换当前和最小
}
python代码
def selection_sort(num_list):
length = len(num_list)
if length <= 1:
return num_list
for j in range(length):
# 假设第一个元素为最小元素
min_num_index = j
# 遍历未排序区域元素,以此和未排序区域的第一个元素做对比
for i in range(j+1, length):
if num_list[i] < num_list[min_num_index]:
min_num_index = i
# 交换位置
num_list[min_num_index], num_list[j] = num_list[j], num_list[min_num_index]
return num_list
有问题就问,文章有误请联系