排序算法(升序)

本文详细介绍了几种常见的排序算法:冒泡排序、简单选择排序、直接插入排序、折半插入排序和希尔排序。每种算法都描述了其基本思想和操作过程,帮助读者理解并掌握这些排序方法。

冒泡排序

连续的扫描序列,每次将当前序列的最大记录通过两两交换移动到序列的尾部

 

简单选择排序

连续的扫描序列,不断地从待排序记录中选择最小的记录放到已排序序列的后面

 

直接插入排序

将目标记录与前面已经排好序的序列从后往前逐个比较,寻找插入的位置

 

折半插入排序

寻找目标记录在已排序的序列中的位置时,可以采取折半查找(二分查找)的方法

 

希尔排序

先将整个待排序序列通过间隔h划分为多个子序列,分别对每个子序列进行直接插入排序;h递减(h>=1),重复以上划分和排序

 

小结

算法

时间复杂度

空间复杂度

稳定性

以下是给出待排序序列{11,20,13,5,21,19,55,60},采用快速排序算法升序排列该序列的程和代码: 第一趟排序: 选取基准值为11,将序列分为{5, 20, 13, 11, 21, 19, 55, 60}和{}两个子序列。 左子序列:选取基准值为5,将序列分为{5, 20, 13, 11}和{}两个子序列。 左子序列:选取基准值为5,将序列分为{5}和{20, 13, 11}两个子序列。 右子序列:选取基准值为20,将序列分为{20, 13, 11}和{}两个子序列。 左子序列:选取基准值为20,将序列分为{20}和{13, 11}两个子序列。 右子序列:选取基准值为13,将序列分为{13}和{11}两个子序列。 左子序列:选取基准值为13,将序列分为{13}和{11}两个子序列。 右子序列:选取基准值为21,将序列分为{21, 19, 55, 60}和{}两个子序列。 左子序列:选取基准值为21,将序列分为{21, 19}和{55, 60}两个子序列。 左子序列:选取基准值为21,将序列分为{21}和{19}两个子序列。 右子序列:选取基准值为55,将序列分为{55}和{60}两个子序列。 最终得到升序排列的序列为{5, 11, 13, 19, 20, 21, 55, 60}。 以下是代码实现: ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[0] left = [] right = [] for i in arr[1:]: if i < pivot: left.append(i) else: right.append(i) return quick_sort(left) + [pivot] + quick_sort(right) arr = [11, 20, 13, 5, 21, 19, 55, 60] sorted_arr = quick_sort(arr) print(sorted_arr) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值