本部分内容包括:冒泡排序、插入排序、选择排序、堆排序。
代码实现:
见我的github:简单排序(冒泡、插入、选择、堆排)
一、冒泡排序
设计思路:
1.每次比较相邻的两个元素,排序从小到大。
2.每次从头比到尾,能确定一个元素的最终位置 。
3.除了已经确定的元素不需要比对外,其他元素重复1和2步骤。
注意事项:
见设计思路2。
二、插入排序
设计思路
1.外部循环从1开始,直到最后,第一个元素默认自有序
2.每次从有序区外部拿一个元素,插入有序区
注意事项
内部循环是有序区内的循环。
三、选择排序
设计思路
1.外部循环从0到n-1
2.内部排序,前i个元素已经有序,查找第i+1个有序元素
3.查找到的元素,记住下角标,在循环结束发生交换
注意事项
查找到最后一个元素:j <= length - 1
四、堆排序
设计思路
1)初试化建堆
2)建堆函数
3)交换堆顶和数组末尾元素,循环整堆,注意边界值
注意事项
1) 输入检查
2) 原址排序时,注意越界判断
3) 右孩子存在才对比