直接选择排序
这个系列是回顾之前所学,是用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
以上就是全部内容,接下来实现合并算法