选择排序-直接选择排序

直接选择排序

 

这个系列是回顾之前所学,是用python商量着完成的。

路过的大佬就当看个乐,实现算法的方式不一,也有讨巧的做法。

我只讲讲我的思路,希望大家浏览的时候能多多提建议,共同学习共同进步。

--------------------------------------------------------------------------------------------------------

 选择排序之直接选择排序的基本思路:

  将序列中最小的数,拿出来与第一个数交换,再到剩下的数中选出最小的数出来与第二个数交换,如此重复

  怎么实现:
1.首先锚定第一个要交换的值i,下标从0开始,一共需要遍历n-1遍
2.然后从i到len(list)中遍历。如果找到比i更小的数,就交换他们的值,如果没有这次遍历就结束了,i值位置不变
3.前面交换了值的部分无需遍历,i+1,继续往后面中的数去遍历

以下是具体实现:
 1 def selected_sort(list):
 2     min_index = 0
 3     # 根据直接选择排序的特性,那么第一个数肯定无疑是最小的值,min_index=0 没有毛病
 4     for i in range(0, len(list)-1):
 5         # 总共就比较n-1次,最后一个不用比较肯定是整个数组中最大的值
 6         # i从0开始无非是将数组中最小的数先遍历出来,放在第一位3
 7         for j in range(i, len(list)):
 8             # 这个循环无非是从j中遍历出比当前min_index还小的值
 9             # 从i开始的原因是,i之前的值已经是排好序的不需要再改动
10             if list[j] < list[min_index]:
11                 # 如果当前还有比min_index,即i下标值还要小的,就交换值,没有就是i最小,那就不需要改动
12                 min_index = j
13         list[min_index], list[i] = list[i], list[min_index]
14         # 这里为什么是i + 1?不是 += 1?因为每一次min_index都是指向待排序序列的第一个下标
15         min_index = i + 1
16     return list

以上就是全部内容,接下来实现合并算法

 
posted @ 2020-09-01 10:50  蒜泥迪奥  阅读(128)  评论(0编辑  收藏  举报