数据结构--排序

排序(相关网站:visualgo.net/zh/sorting)

冒泡排序:

1、比较所有相邻元素,如果第一个比第二个大,则交换它们。
2、一轮下来,可以保证最后一个数是最大的。
3、执行n-1轮,就可以完成排序。

动画展示:
数据结构--排序
数据结构--排序

选择排序:

1、找到数组中最小值,选中它并将其放置在第一位。
2、接着找到第二小的值,选中它并将其放置在第二位。
3、依次类推,执行n-1轮。

动画展示:
数据结构--排序
数据结构--排序

插入排序:

1、从第二个数开始往前比。
2、比它大就往后排。
3、以此类推进行到最后一个数。

动画展示:
数据结构--排序
数据结构--排序

归并排序:

分:把数组劈成两半,再递归地对子数组进行“分”操作,直到分成一个个单独的数。
合:把两个数合并为有序数组,再对有序数组进行合并,直到全部子数组合并为一个完整数组。
合并两个有序数组:
1、新建一个空数组res,用于存放最终排序后的数组。
2、比较两个有序数组的头部,较小者出队并推入res中。
3、如果两个数组还有值,就重复第二步。

动画展示:
数据结构--排序
数据结构--排序

快速排序:

分区:从数组任意选择一个“基准”,所以比基准小的元素放在基准前面,比基准大的元素放在基准的后面。
递归:递归地对基准前后的子数组进行分区。

动画展示:
数据结构--排序

数据结构--排序