算法: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列表后面