美文网首页
排序算法1:交换排序

排序算法1:交换排序

作者: zx_tree | 来源:发表于2017-12-25 11:05 被阅读0次

一、冒泡排序

谈到排序算法,首先映入脑中的便是冒泡排序,这也是我接触的第一种排序算法,的确算是一个比较经典的算法。冒泡排序的算法应该是从鱼吐泡泡的事件中启发出来的。也应该算是最容易理解的一种排序算法了

1.算法思想图解

从左到右的按照从小到大的顺序依次排列

第一次排序

第二轮排序

第三轮排序

随着比赛轮数的增加,比赛次数呈现递减趋势

2.时间复杂度

时间复杂度的算法:如果是四个数字排序的话,那第一轮排序需要进行3次,第二轮需要进行2次,第三轮需要1次,则为3+2+1次,推及到Nge数字排序的话那就是(n-1)+(n-2)+.....+1=n^2/2-n/2.根据复杂度的规则,去掉低阶项n/2,和常数系数,那么时间复杂度就是O(n^2)

3.空间复杂度

空间复杂度就是在交换元素时那个临时变量所占的内存。最优的空间复杂度为开始元素已排序即不需要进行交换,则空间复杂度为 0;最差的空间复杂度为原始元素为逆排序,则空间复杂度为 O(N);那么平均的空间复杂度为O(1)。

4.算法实现(java)

5.算法改进

看一下算法思想图解中,第二轮排序完成后已经完成了所有的排序,但是按照上面的算法实现,依然会进行第三轮比较排序,虽然单看上面的仅仅进行了最后一轮的操作,但是如果数组中的数量成百上千呢,如果数组的顺序一开始就是已经排序好了呢,那么这个耗费的时间也是不可低估的,所以要在原来算法的基础上进行改良,如下给定一个 整数型标识符 flag ,当某次外层循环中,内循环里没有发生相邻元素的交换,则表示当前数组已排序成功,直接跳出外层循环。

二、快速排序

1.算法思想及图解

(1)算法的思想

是冒泡排序的改进型。

a.在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率),然后分别从数组的两端扫描数组.

b.设两个指示标志(low指向起始位置,high指向结束位置),首先从尾部逆序开始,如果发现有元素比该基准点的值小,就交换low和high位置的值

c.然后从前半部分正序开始扫描,如果有元素大于基准点的值,就交换low和high位置的值,如此往复循环,直到lo>=hi,

d.把基准点的值放到hi这个位置

e.使用递归方法对前半部分和后半部分进行以上步骤的排序即可。

(2)图解

第一轮排序:

然后将low和high重合前的数组和重合后数字之后的数组用递归方法进行一样的排序

注意:交换的是低位和高位的值,而不是基准值

2.时间复杂度

快速排序时间复杂度是O(NlogN).

3.算法代码实现(java)

相关文章

  • 数据结构05-排序和查找

    1:排序算法分为如下5类: 插入排序:普通插入排序,shell排序等; 选择排序:普通选择排序,堆排序; 交换排序...

  • 排序

    本文记录几个基础的排序算法。排序算法分为插入排序、交换排序、选择排序等几大类。 插入排序 1. 直接插入排序 O(...

  • 算法 ----排序算法

    1、排序算法有哪些? 插入排序: 直接插入排序、希尔排序选择排序: 简单选择排序、堆排序交换排序:冒泡排序、快速排...

  • 冒泡排序

    1 .算法思想冒泡排序是一种简单的交换类排序算法,能够将相邻的元素进行交换,从而逐步将待排序序列变成有序序列。冒泡...

  • 经典算法---排序(摘抄)

    一、排序算法 前言:常见排序算法分类 非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入...

  • Java学习记录(常用 算法 排序 )

    排序算法的分类如下: 1.插入排序(直接插入排序、折半插入排序、希尔排序);2.交换排序(冒泡泡排序、快速排序);...

  • 冒泡排序

    冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。 一、算法基本思想 (...

  • 排序算法动图加非伪代码通俗详解

    所有排序算法 1.冒泡排序每次交换2个,交换到最后的那个数是最大的image 选择排序首先在未排序序列中找到最小(...

  • 冒泡排序算法

    冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。冒泡排序算法的思路就是交换排序,通过相...

  • Python算法(一) 数组冒泡排序(难度等级:easy)

    冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。算法原理:从无序序列头...

网友评论

      本文标题:排序算法1:交换排序

      本文链接:https://www.haomeiwen.com/subject/afakgxtx.html