算法:2选择排序

Posted doitjust

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:2选择排序相关的知识,希望对你有一定的参考价值。

选择排序 

时间:O(n^2)

 

实现功能:将数组元素按从小到大的顺序排列。

思路:先找出数组中的最小元素,将最小的元素复制给新的数组。

 

使用python实现。(python中列表与数组相似)

 1 //找出列表中最小的元素
 2 def findSmallest(arr):
 3     smallest = arr[0] //存储最小的值
 4     smallest_index = 0 //存储最小的索引
 5     for i in range(1,len(arr)):
 6         if arr[i]<smallest:
 7             smallest = arr[i]
 8             smallest_index = i
 9     return smallest_index
10 
11 
12 //选择排序
13 def selectionSort(arr):
14     newArr = []
15     for i in range(len(arr)):
16         newArr.append(arr.pop(findSmallest(arr)))
17     return newArr
18 
19 print(selectionSort([1,5,9,7,5,3,45,15,26,565,156,25,69226,526]))

运行结果:

[1, 3, 5, 5, 7, 9, 15, 25, 26, 45, 156, 526, 565, 69226]

 

解析:

findSmallest()方法返回的是原列表中最小的元素的索引
第5行:
  循环从1开始,因为smallest,smallext_index默认取值为原列表的第0个元素,不必从0开始比较.

第16行
arr.pop(i):表示将arr数组中的第i个元素删除,并返回
newArr.append(item):将元素item追加到newArr列表后面
 
 

 

以上是关于算法:2选择排序的主要内容,如果未能解决你的问题,请参考以下文章

7种基本排序算法的Java实现

七大排序算法(插排,希尔,选择排序,堆排,冒泡,快排,归并)--图文详解

算法笔记 排序算法完整介绍及C++代码实现 HERODING的算法之路

在第6731次释放指针后双重免费或损坏

C言语选择排序算法及代码

Java排序算法 - 堆排序的代码