做外汇门户网站,wordpress 百度收录,建设网站的注意事项,印刷 网站源码参考资料 #xff1a;阿秀
一、冒泡排序 冒泡排序就是把小的元素往前交换或者把大的元素往后交换#xff0c;比较相邻的两个元素#xff0c;交换也发生在这两个元素之间。具体步骤#xff1a;
比较相邻的元素。如果第一个比第二个大#xff0c;就交换他们两个。对每一对…参考资料 阿秀
一、冒泡排序 冒泡排序就是把小的元素往前交换或者把大的元素往后交换比较相邻的两个元素交换也发生在这两个元素之间。具体步骤
比较相邻的元素。如果第一个比第二个大就交换他们两个。对每一对相邻元素作同样的工作从开始第一对到结尾的最后一对。这步做完后最后的元素会是最大的数。针对所有的元素重复以上的步骤除了最后一个。持续每次对越来越少的元素重复上面的步骤直到没有任何一对数字需要比较。 优化思路 假如从开始的第一对到结尾的最后一对相邻的元素之间都没有发生交换的操作这意味着右边的元素总是大于等于左边的元素此时的数组已经是有序的了我们无需再对剩余的元素重复比较下去了。 二、选择排序 选择排序是给每个位置选择当前最小元素循环遍历n-1次整个数组每次遍历将最小值交换到遍历起始位置。具体步骤
在未排序序列中找到最小大元素存放到排序序列的起始位置从剩余未排序元素中继续寻找最小大元素然后放到已排序序列的末尾以此类推直到所有元素均排序完毕
三、插入排序 插入排序是在一个已经有序的小序列基础上一次插入一个元素。刚开始这个有序的小序列只有1个元素就是第一个元素。比较是从有序序列的末尾开始也就是想要插入的元素和已经有序的最大者开始比起如果比它大则直接插入在其后面否则一直往前找直到找到它该插入的位置。具体步骤 从第一个元素开始该元素可以认为已经被排序 取出下一个元素在已经排序的元素序列中从后向前扫描 如果该元素已排序大于新元素将该元素移到下一位置 重复步骤3直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2~5
四、快速排序 从数组中选择一个元素作为中轴元素吧然后把数组中所有小于中轴元素的元素放在其左边所有大于或等于中轴元素的元素放在其右边显然此时中轴元素所处的位置的是有序的。也就是说我们无需再移动中轴元素的位置。 从中轴元素开始把大的数组切割成两个小的数组(两个数组都不包含中轴元素)接着通过递归的方式让中轴元素左边的数组和右边的数组也重复同样的操作直到数组的大小为1此时每个元素都处于有序的位置。具体步骤
选取第一个数为基准将比基准小的数交换到前面比基准大的数交换到后面对左右区间重复第二步直到各区间只有一个数
五、希尔排序 希尔排序是插入排序的一种变种交换不相邻的元素以对数组的局部进行排序。希尔排序的思想是采用插入排序的方法先让数组中任意间隔为 h 的元素有序刚开始 h 的大小可以是 h n / 2让 h 一直缩小当 h 1 时也就是此时数组中任意间隔为1的元素有序此时的数组就是有序的了。 举个 1h n / 2 进行分组 2每个组内进行排序 3缩小 h n / 4进行排序 4直到 h 1 六、归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法Divide and Conquer的一个非常典型的应用。将已有序的子序列合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。若将两个有序表合并成一个有序表称为2-路归并。 通过递归的方式将数组一直分割直到数组的大小为 1此时只有一个元素那么该数组就是有序的了之后再把两个大小为1的数组合并成一个大小为2的数组再把两个大小为2的合并成4的 … 直到全部小的数组合并起来。具体步骤
把长度为n的输入序列分成两个长度为n/2的子序列对这两个子序列分别采用归并排序将两个排序好的子序列合并成一个最终的排序序列。 举个 图片来源【算法】排序算法之归并排序 - 知乎 (zhihu.com)