数据结构之排序算法汇总

排序算法比较经典的有冒泡排序,希尔排序和快速排序。
冒泡排序:遍历列表,比较相邻两个数据的大小,后者较小,则交换位置,相当于泡泡,逐次的后移。每次遍历可以将最大值移动到末尾。
快速排序:取出任意一个数据作为比较值,然后定义start和end两个指针,分别用来从数据列表的开头和末尾进行遍历。首先从末尾进行遍历,若end指针指向的数据小于比较值,则进行交换,
交换后末尾指针停止遍历;接着,start指针开始遍历,若start指针指向的数据大于比较值,则进行交换,start指针停止遍历。

class
Sort(): # 冒泡排序时间复杂度O(n!) def puplle_sort(self, data_list): length = len(data_list) for j in range(length - 1): for i in range(length - j - 1): if data_list[i] > data_list[i + 1]: data_list[i], data_list[i + 1] = data_list[i + 1], data_list[i] return data_list # 快速排序时间复杂度nlgn : 4,1 def quick_sort(self, data_list): length = len(data_list) if length < 2: return data_list ref_data = length // 2 start = 0 end = length - 1 bool = 1 while 1: if start > end: break if bool: if (data_list[ref_data] >= data_list[end]): data_list[ref_data], data_list[end] = data_list[end], data_list[ref_data] ref_data = end bool = 0 end -= 1 else: if (data_list[ref_data] <= data_list[start]): data_list[ref_data], data_list[start] = data_list[start], data_list[ref_data] ref_data = start bool = 1 start += 1 data_list[:ref_data] = self.quick_sort(data_list[:ref_data]) data_list[(ref_data + 1):] = self.quick_sort(data_list[(ref_data + 1):]) return data_list

猜你喜欢

转载自www.cnblogs.com/xuehaiwuya0000/p/11487700.html