排序算法概述

简介: 提到排序算法我们要知道两个经常提到的概念:(1)排序算法的稳定性:所谓“稳定性”是 指,在待排序数组出现的两个相同的元素,排序之后相对维持保持不变。比如:待排序数组为arr[] = {1,4,3,1},排序之后元素变为arr_new[] = {1,1,4,3},并且arr_new中的第一个是arr中的第一个1,arr_new中的第二个1是arr中的第二个1,这是我们就说这种排序时稳定的。

提到排序算法我们要知道两个经常提到的概念:
(1)排序算法的稳定性:所谓“稳定性”是 指,在待排序数组出现的两个相同的元素,排序之后相对维持保持不变。比如:待排序数组为arr[] = {1,4,3,1},排序之后元素变为arr_new[] = {1,1,4,3},并且arr_new中的第一个是arr中的第一个1,arr_new中的第二个1是arr中的第二个1,这是我们就说这种排序时稳定的。
(2)原地排序:所谓原地排序是指,不申请多余的空间来辅助完成排序算法,而是在原来的待排序的数据之上直接进行比较,交换,移动等操作

快速排序

算法思想:快速排序时这样的一种排序,选取数组中的第一个元素arr[0]作为依据,遍历一遍数组后,使得数组中的第一个元素进入正确的位置,即在该位置左面的元素均小于等于arr[0],在该位置右面的元素均大于等于arr[0]。然后,在对该位置左面和右面的元素分别进行快速排序,如此一来完成整个数组的排序。

冒泡排序

算法原理:冒泡排序是经过n-1趟子排序完成的,第 i 趟子排序从第1个数至第 n-i+1 个数,若第 i 个数比第 i+1 个数大,则交换这两个数,实际上这样经过 i 次子排序就使得 第1个数至第 n-i +1个数之间最大的数交换到了n-i+1 的位置上了。实际上冒泡排序时可以优化的,那就是当第 i 次子排序并没有发生元素的交换时,就说明数组已经排好序了,以后的子排序就不用做了。

选择排序

算法原理:所谓选择排序经过 n-1 次选择,当进行第 i 次选择时,是从第1个元素到第 n-i+1 的元素中选择最大的元素和第 n-i+1 个位置的元素交换,这样做比如第1 次选择使得最大的元素到了数组的最后一个位置。注意哦,在选择排序中每次选择时只进行一次数据的交换。

插入排序

算法原理:将待排序的数组分为:有序区 和 无序区。然后每次从无序区取出第一个数据插入到有序区的正确位置,最终完成排序。

堆排序

算法思路:所谓的堆排序是利用完全二叉树的思想实现的。首先应该提到的是最大堆,在最大堆中(完全二叉树二叉树)中每个父节点都大于等于两个儿子节点的值,这时候很明 显堆顶是元素的最大值,然后把堆顶元素和堆中最后一个元素(分层遍历的节点编号最大的元素)交换,这样最大值就落到了数组的arr[n-1]的位置,然后 把前n-1元素继续按照上面的方式处理,如此进行n-1次就完成堆排序。

归并排序

算法原理:归并排序的思想是分治,将一个带排序的数组分成两个较小的数组,然后分别进行排序,组后将两个排好序 的较小的数组合并起来,就得到了原来数组的排序后的结果。应该注意的是这种将两个排好序的数组合并有一个较好的算法,时间复杂度是O(n1+n2)的。 n1、n2分别是两个小数组的长度。

 

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 搜索推荐
重点算法排序之堆排序(下篇)
我们已经讲述了快速排序和归并排序,快速排序和归并排序详解文章链接:重点算法排序之快速排序、归并排序(上篇),我们本篇文章来详细讲述以下堆排序。堆排序的主要内容有:最大堆(大顶堆)、最小堆(小顶堆)、通过孩子找父亲、通过父亲找孩子、向下调整算法建堆。下面我会给大家一一介绍。
29 0
|
2月前
|
搜索推荐 算法 索引
【数据结构排序算法篇】----选择排序【实战演练】
【数据结构排序算法篇】----选择排序【实战演练】
23 0
|
2月前
|
搜索推荐 算法 Java
【数据结构排序算法篇】----快速排序【实战演练】
【数据结构排序算法篇】----快速排序【实战演练】
28 2
|
3月前
|
搜索推荐 算法
常见排序算法以及冒泡排序的基础使用方法
常见排序算法以及冒泡排序的基础使用方法
16 0
|
6月前
|
算法 搜索推荐
重点算法排序之快速排序、归并排序(上篇)
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
29 0
|
10月前
|
搜索推荐 Shell 计算机视觉
基础排序算法
基础排序算法
50 0
|
11月前
|
存储 搜索推荐 算法
【算法】核心排序算法之堆排序原理及实战
【算法】核心排序算法之堆排序原理及实战
【算法】核心排序算法之堆排序原理及实战
|
搜索推荐 算法
高级排序算法(快速排序)
高级排序算法(快速排序)
|
算法 搜索推荐
高级排序算法(归并排序)
高级排序算法(归并排序)
|
算法 搜索推荐 索引
图解选择排序算法及优化
图解选择排序算法及优化